ATtiny2313: помогите с ШИМ и еще несколько вопросов

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
DemanStar
Родился
Сообщения: 10
Зарегистрирован: Пт мар 19, 2010 11:58:14

ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение DemanStar »

Добрый день любители радиоуправляемих котов

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

Управлять вентилятором печки с помощью ШИМ


По параметрам 2313 хватает

Ниже воспользовался СWARV + немного написал с точки зрения логики и своего уровня знаний МК

В программировании не шарю но желание присутствует

Может поможете ?

2313 должно хватить

Даташит читаю но многого догнать не могу, но желание присутствует)))

На начало сконфигурировать порты, моего ума вроде бы хватило, а дольше ступор как правильно начать продолжение, а именно где))

Не пинайте за ошибки

Код: Выделить всё


/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 1
Date    : 19.03.2010
Author  : DemanStar                           
Company : DSp                            
Comments: Ъ 


Chip type           : ATtiny2313
Clock frequency     : 9,600000 MHz
Memory model        : Tiny
External SRAM size  : 0
Data Stack size     : 32

PortA  0 - PWM скорость +   Кнопка
       1 - PWM Скорость -   Кнопка
       2 - на выход порта В (7) подать 1 на 15 мин после чего подать 0  Кнопка

PortB  0 - Поскольку я понял это выход PWM (25% 50% 75% 100%)
       1 - Выход на заслонку 1.1 (1)
       2 - Выход на заслонку 1.2 (0)
       3 - Выход на заслонку 2.1 (1)
       4 - Выход на заслонку 2.2 (0)
       5 - Выход на заслонку 3.1 (1)
       6 - Выход на заслонку 3.2 (0)
       7 - Выход на на 15 мин    (Обогрев заднего стекла)

PortD  0 - Выход на светодиод 1  (25%)    
       1 - Выход на светодиод 2  (50%) 
       2 - Выход на светодиод 3  (75%)
       3 - Выход на светодиод 4  (100%)
       4 - Заслонка 1  Кнопка
       5 - Заслонка 2  Кнопка
       6 - Заслонка 3  Кнопка
PortA(0-1) Управление ШИМ для регулировки скорости Вентилятора
PortA(2) Управление обогревом заднего стекла

PortB(0) для управления вентилятора оопителя
PortB(1-7) Это будет использоваться вместо штатных рычагов для печки в машине

PortD(0-3) Индикация скорости 
PortD(4-6) Управление заслонками (например при первом нажатии на виходе PortB (1-2) будет (1,0) с задержкой 3 сек. 
при втором нажатии наоборот (0,1) тоже 3 сек потом (0,0) )        
        
*****************************************************/

#include <tiny2313.h>

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In 
// State2=T State1=T State0=T 
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTB=0x00;
DDRB=0xFF;

// Port D initialization
// Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out 
// State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0 
PORTD=0x00;
DDRD=0x0F;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 9600,000 kHz
// Mode: Fast PWM top=03FFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x03;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;

while (1)
      {
      // Place your code here
     

      };
}


Может поставите на путь истинный
Даташит разобрать до костей пока что не могу :)

Правил 25,03,10
9,30
Вложения
Climate.zip
Вот изменил часть исправил
добавил коментов
не не включил ШИМ
25,03,10
9,30
(104.35 КБ) 265 скачиваний
cxem.jpg
Вот схема
Подключение аккураторов будет через транзисторы, их не рисовал так как сам еще не знаю какие
(94.32 КБ) 393 скачивания
Последний раз редактировалось DemanStar Чт мар 25, 2010 10:34:45, всего редактировалось 5 раз.
Реклама
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение Twilo »

много текста, ничего не понятно.
1)Вы обращаетесь к регистру OCR0A, а куда выход соответствующей ноги подключен ? на схеме не видно
2)Таймер на ШИМ не настроен! точнее он совсем остановлен
3)прерывания от таймеров не разрешены, собственно флаг I тоже не установлен
4)Вы не правильно считываете состояние кнопок, подключенных к порту Д ( надо if (!PIND.X))
5)поконкретнее с тем что хотите сделать
больше не осилил, пока думаю хватит. програму сотрите, делайте новую

ЗЫ полевик ИРЛ вроде как от логических уровней хорошо работает, смысл биполярных транзисторов мне не понятен

дальше подяжку ресета нужно делать обязательно, тем более в автомобиле

ЗЫЫ Если приводы замков собираетесь использовать для регулировки температуры, то лучше использовать электроклапан, например от БМВ. на сайте была статья посвященная климат контролю, поищите
Реклама
Аватара пользователя
DemanStar
Родился
Сообщения: 10
Зарегистрирован: Пт мар 19, 2010 11:58:14

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение DemanStar »

Изменил
1)Вот это было взято с другой программы для тиньки 13 потому и написал что не уверен в этом и я думал что ШИМ будет по PORTB.0, туда и поключил движок
2)Помогите включить
Когда читал даташит то там сразу включается 2 ШИМа, а мне это не надо потому наверное и один не смох включить
TCCR1A надо записать 00FF?
3) увы еще незнаю как включить
4) исправил
5)Задача заключается в том что бы заставить аккураторы двигать заслонки, а то вечная регулировка их достала, заслонок 3
Управлять вентилаторм печки при помощи 2 кнопок которые контролируют ШИМ
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение Twilo »

а у заслонок нету промежуточных положений?
шим вам нужен только для вентилятора печки?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
DemanStar
Родился
Сообщения: 10
Зарегистрирован: Пт мар 19, 2010 11:58:14

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение DemanStar »

1) нет так как система самих заслонок немного не правильная
2) именно так :)
Реклама
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение Twilo »

TCCR1A - 8-битный регистр таймера 1, 00FF - 16-битное число.
у нас было обоащение к OCR0A - это регистр сравнения таймера 0
смотрим даташит, стр. 73-79, там сказано что надо записать в TCCR0A, TCCR0B, TIMSK, что бы он работал в режиме ШИМ. TCCR0A |= 0x03|0x80 = те же 0x83 (вчера не досмотрел, но программа у вас все равно не работала бы, т.к. прерывания не разрешены). 03 в даном случае - быстрый ШИМ, 0x80 - сброс OC0А при совпадении с регтстром OCR0A, установка в "1" OC0А при достижении 0xFF тем же OCR0A. OC0А - порт Б.2, если не ошибаюсь. TCCR0B=от 1 до 5, в зависимости от того что нужно, см. таблицу на стр. 77. Что бы использовать прерывание переполнения таймера 0, то в TIMSK устанавливаем бит TOIE0 -> TIMSK |= 0x02
теперь может и заработает что то, но только после того как перед главным цыклом записать #asm("sei"); - это глобальное разрешение всех прерываний.
Реклама
Аватара пользователя
AndyWorld
Прорезались зубы
Сообщения: 209
Зарегистрирован: Вт сен 30, 2008 09:23:14
Откуда: Краснодарский край

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение AndyWorld »

Я думаю, что за три секунды заслонки всетаки будут сломаны. Не сейчас так потом. Я брал двигатели от калькуляторов Ситезен с печатью. В каждом банке их валом сломанных, и на почте тоже. Нужно подойти к нужным людям и дать им пива.
Аватара пользователя
DemanStar
Родился
Сообщения: 10
Зарегистрирован: Пт мар 19, 2010 11:58:14

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение DemanStar »

То б то выходид Шим это не PortB.0 а PortB.2
TCCR0A надо изменить на 0x80
TCCR0B надо поставить 00000100
TIMSK = 0x02
Вот так надо исправить?
Если не сложно и есть время не могли бы вы написать в коде программы правильные значения рядом через 2 косые а то я что то могу до конца понять что произошло :)

и по поводу двигателей, есть ли ссылка на них что бы посмотреть что оно такое вообще)))
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение Twilo »

ну на tiny2313 есть 4 канала шима, опять же смотрим даташит: PB2-OCOA, PB3-OC1A, PB4-OC1B, PD5-OCOB.
выход будет куда настроите, хоть на все сразу. в даном случае (TCCR0A = 0x80) на PB2.
TCCR0B - частота тиков таймера, в даном случае не принципиально, пускай будет 0x03 или 0x04, хоть 0x01 всеравно. TIMSK =0x02 разрешает прерывание по переполнению таймера 0. также надо разрешить все прерывания командой "SEI"

Код: Выделить всё

#include...
...
//переменные
...
interrupt...
...
void main(void){
...
//инициализация портов и т.д.
...
TCCR0A=0x83;//fast PWM, non inverted, top=FFh out - PB2
TCCR0B=0x03;//предделитель на 64. таймер тикает каждый 64-й такт контроллера. если кварц на 10МГц то таймер тикает со скоростю 156250 Гц
...
TIMSK=0x02;
...
#asm("sei"); //глобальное разрешение прерываний

while(1){

  }
}
теперь в зависимости от значения регистра OCR0A будет менятся скважность на выходе PB2. туда можно записывать от 0 до 255 или же до FFh что одно и тоже

резистор на затвор полевика. можно стабилитрон еще на случай пробоя полевика.
делайте опрос кнопок как вам угодно и меняйте OCR0A, а вместе с ним и обороты двигла.
Еще у кнопок будет дребезг, надо учитывать это, или используйте герконовые кнопки, как у "РОБИКа". Дребезг это когда вы нажимаете или отпускаете кнопку, а МК это определяет как многократные нажатия
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение Twilo »

привода так нельзя подключать, во первых не будут работать, во вторых МК может умереть от такого.
нужно к МК подключить ULN2003 и к ней 6 реле, зашунтированиых диодами, а креле уже привода
Аватара пользователя
DemanStar
Родился
Сообщения: 10
Зарегистрирован: Пт мар 19, 2010 11:58:14

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение DemanStar »

Большое спасибо за помощь, особенно за то что написали почему именно так :)
По поводу аккураторов я их так нарисовал потому что еще не знал через что лучше их подключить большое спасибо за предложение использовать ULN2003
Завтра с утра начну править)
Аватара пользователя
AndyWorld
Прорезались зубы
Сообщения: 209
Зарегистрирован: Вт сен 30, 2008 09:23:14
Откуда: Краснодарский край

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение AndyWorld »

По поводу двигателя от калькулятора. На нем написано ЕМ-94. На самом печатающем шасси написано. EPSON Model-42V. По всей видимости простой коллектроный движок. Управляю им через драйвер L293. А можно и таким драйвером управлять TOSHIBA TA7291P - если движок мощный. Кстати очень удобная вещь. Подавая сигналы на нужные входы можно крутить двигатель в разные стороны и ни каких транзисторных сборок не нужно. Ноги МК подсоеденяем напрямую к драйверу.
suman13
Родился
Сообщения: 11
Зарегистрирован: Ср ноя 26, 2008 12:41:36
Откуда: Ñàðàíñê

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение suman13 »

Еще по поводу редукторов централього замка. Их еще называют активаторами.
Длительность импульса открытия\закрытия - 0,7 сек. Иначе будет наблюдаться явление "отскока" штока привода.
Лично сам проверял.
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение Twilo »

что бы не отскакивали, оба контакта привода замыкаются между собой сразу после отключения привода
Аватара пользователя
andrey_artemov
Встал на лапы
Сообщения: 136
Зарегистрирован: Сб авг 15, 2009 21:26:50
Откуда: Пенза
Контактная информация:

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение andrey_artemov »

А вообще про какой автомобиль идёт речь ?
А то в последних ВАЗ 2110 с новой европанелью, заслонками управлял блок управления, к которому подключались электрические моторедуктоы, я думаю их гораздо правильней использовать, чем актуаторы.
Кстати вот интересная тема про актуаторы
http://roboforum.ru/viewtopic.php?f=4&t=3235
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение Twilo »

Управляю им через драйвер L293.
улн-ка+реле дешевле будет раза в два, также думаю они не совсем для управления приводами ЦЗ. во всех сигнализациях и штатных системах управления ЦЗ стоят реле, у которых НЗ контакты на массе, общие к приводу ЦЗ, НР +12В. Включая нужное реле мы выбираем направление движения привода, отключая реле моторчик привода получается замкнут, типа электротормоз.
ну а L293 микра конечно хорошая
Аватара пользователя
DemanStar
Родился
Сообщения: 10
Зарегистрирован: Пт мар 19, 2010 11:58:14

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение DemanStar »

andrey_artemov писал(а):А вообще про какой автомобиль идёт речь ?
А то в последних ВАЗ 2110 с новой европанелью, заслонками управлял блок управления, к которому подключались электрические моторедуктоы, я думаю их гораздо правильней использовать, чем актуаторы.
Кстати вот интересная тема про актуаторы
http://roboforum.ru/viewtopic.php?f=4&t=3235
ВАЗ 21099 2004 с высокой панелью
у них торпеда сделана и из жуткого пластика и заслонки даже после 2 разборки не работают так как надо.
Приводы с матрехи не брал так как не могу их найти а если видел на фото то они намного больше чем акураторы
Акураторы хочу задушить подавая на них вольт 5 но это уже будет потом потому что их мощности мне не надо и стоимость одного 3 доллара. а моторедуктор ваз будет стоить наверное не меньше 18 долларов ))) единственный минус это то что у них только 2 положения
Аватара пользователя
DemanStar
Родился
Сообщения: 10
Зарегистрирован: Пт мар 19, 2010 11:58:14

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение DemanStar »

Обновил но куча варнингов так и осталась, не нравлюсь я WinAVR
VMLAB вообще на отрез отказывается что либо делать
Вложения
Climate.zip
Вот обновил
(104.35 КБ) 202 скачивания
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение Twilo »

А вы не пробовали почитать варнинги? :)))

В си "=" операция присвоения, а "==" проверка на равенство
Twilo
Нашел транзистор. Понюхал.
Сообщения: 193
Зарегистрирован: Вт авг 25, 2009 22:24:39
Откуда: Черкассы
Контактная информация:

Re: ATtiny2313: помогите с ШИМ и еще несколько вопросов

Сообщение Twilo »

а можно поинтересовацца, кто автор этого бредового примера, который вы переделываете. Работать вроде бы должно но написано жутко :shock:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»