К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Как остановить стартер ?????

Гость
0 - 16.02.2013 - 23:36
Как остановить стартер по датчику масла и по лампочке зарядки .


#include <avr/io.h>
#include <util/delay.h>
int main(void)
**
DDRA = 0x00;
PORTA = 0xFF;
DDRD = 0xFF;
PORTD = 0x00;
DDRB = 0xFF;
PORTB = 0x00;

while(1)

**

while ((PINA&(1 << PA0))== 1) ** ** //проверить "1" на линии 0 порта А

_delay_ms(200);




if ((PIND&(1 << PD0)) ==0)//проверяет Если PD0 равен 0
**
PORTD |= (1 << PD0);// ВКЛ ЗАЖИГАНИЕ
PORTB |= _BV(PB1); //вкл желтый

_delay_ms(1000); // ждем 1 сек.

PORTB &= ~_BV(PB1);// выкл желтый
PORTB |= _BV(PB0);// зеленый ВКЛ

if ((PIND&(1 << PD3)) ==0)//проверяет Если PD1 равен 0
**

PORTD |= _BV(PD3); //СТАРТ СТАРТЕР
PORTB |= _BV(PB2); //вкл красный
_delay_ms(5000);

PORTD &= ~_BV(PD3);// СТОП СТАРТЕР
PORTB &= ~_BV(PB2);// выкл красный
**


else
**


PORTD &= ~_BV(PD3);// СТОП СТАРТЕР
PORTB &= ~_BV(PB2);// выкл красный

**
**


else


**
PORTD &= ~(1 << PD0);// зажигание выкл
PORTB &= ~_BV(PB0);// зеленый выкл

**





while ((PINA&(1 << PA0))==0) ** ** //Если кнопка нажата будет выполняться пустой цикл
_delay_ms(200);



**

**



Гость
1 - 16.02.2013 - 23:39
КАК должно быть правильно, а то я уже замучался
Гость
2 - 17.02.2013 - 00:07
Эх а бюджет так и не озвучили, за это время можно было такого написать.
Ну а так разбейте задачу на состояния типа:
ожидание пуска
подготовка к запуску
запуск
работа
остановка
сбой
ну или как там у вас по технологии

Далее для каждого состояния определите состояние выходов и условия переходов в другие состояния.

Для вычисления задержек используйте таймер, т.е. настройте прерывание по таймеру с нужной периодичностью, там меняйте некий счетчик. В простых случаях можно и без таймера, но я бы его здесь использовал.

Соответственно из основного цикла убрались бы все delay за исключением микросекундных (но у вас там таких нет)

для всех входных сигналов хорошо бы сделать программный фильтр (ну это если вы его аппаратно не реализовали). Естественно для фильтра я бы использовал бы на вашем месте прерывание и там бы с некой периодичностью анализировал бы состояние входов

затем бы основной цикл был бы переписан с учетом выделенных состояний, ну а так же того что значения входов берутся не на прямую со входов а после фильтра.

Далее наверное сюда не плохо прикрутить LCD дисплей для отображения состояния и кодов ошибок.
Может быть еще UART для настройки параметров ну или пару тройку кнопок.

Так же желательно параметрам давать нормальные имена что бы не думать а за что там у меня отвечает порт PA1.
Гость
3 - 17.02.2013 - 00:11
Ну и напоследок если у вас доступ к переменным будет идти из основного цикла и из прерывания то не забывайте про синхронизацию
Гость
4 - 17.02.2013 - 01:34
Спасибо я просто стараюсь сам разобраться во всей этой этой штуке , тестирую все на протеусе , информация очень полезная , ну а насчет корыстног итереса , то по бытылочке коньячка если в наших кроях будете то запросто организуем
Гость
5 - 18.02.2013 - 07:00
стартер надо тормозить по достижению 400 оборотов/минуту, обороты считать в прерывании, обнулять с перерасчетом в таймере.
Гость
6 - 18.02.2013 - 20:46
А может по току, который потребляет стартер, как только ток уменьшился- двигатель работает самостоятельно.
Гость
7 - 18.02.2013 - 22:39
6-robot bender 0002 >
Цитата:
Сообщение от Фанат NASCAR Посмотреть сообщение
стартер надо тормозить по достижению 400 оборотов/минуту, обороты считать в прерывании, обнулять с перерасчетом в таймере
так делают все, и надежнее способа еще не придумали. С дополнительным контролем конечно того, что нет обрыва. То есть полный 0 на входе в полсекунды - тоже остановка.
Гость
8 - 19.02.2013 - 22:35
Я все понимаю как это на происходит , но я самоучка и пытаю понять на уровне програмы,так как мне не хватает примера , исходног кода я перелопачиваю кучу литературы и понимаю чтоесть куча способов реализации , если б мне нужно было это сделать на машину я бы отсек стартер через реле или купил бы китайскую приблуду за 1500р . Я хочу понять саму лексику написания , а этот пример выбрал так как там есть , ввод и вывод опрос и действия ,
Гость
9 - 20.02.2013 - 01:56
8-klaster_q >whoim@mail.ru напиши, постараюсь помочь словами
Гость
10 - 20.02.2013 - 10:54
тут на протеусе особо не реализуешь, разве только отладишь цифровую часть. тут Фанат NASCAR правильно написал про 400 оборотов.
я бы в таком варианте подал сиглан с датчика оборотов на счетный вход, а другой таймер (например WD)завел бы на 1/8 или 1/16 секунды и прерыванием бы расчитывал обороты простой математикой. как только обороты выросли - клац! и отключил.
интересно что за устройство будет, случайно не генератор с автозапуском? :-)
Гость
11 - 20.02.2013 - 17:33
Это может быть и генератор и двс ' это пример просто . Мне блже эта тема так как мне нравяться автомобили, поэтому пример мне сподручней ,


К списку вопросов






Copyright ©, Все права защищены