подскажи пожалуйста, как сделать так, что б когда на РВ3 была лог 1 кнопка не изменяла состояние портов.
а то щас получается так:
1. на порту РВ3 лог 0 - всё переключает как надо.
2. отключаю порт РВ3 от общего(он через резистор 10к на +5В) и светодиоды на портах РВ0-РВ2 светят тусклее, значит там не лог 1 а что-то среднее. А если нажать кнопку то светодиоды на портах РВ0-РВ2 зажигаются хаотически, т.е. кнопка действует.
3. Мало того, когда отключаю РВ3 от общего, то сотояние портов изменяется на то, которого нет в скетче(т.е. получается дополнительный режим какой-то).
#define Butt PB4 // кнопка
#define Curr PB2 // переключение тока
#define OnLi PB1 // включение LI-Io
#define OnNi PB0 // включение Ni-Mh
#define Sel PB3 // порт разрешения считывания состояний кнопки
int regim=1;
int flag=0;
int CelCurr=0;
void setup() {
pinMode(Curr, OUTPUT);
pinMode(OnLi, OUTPUT);
pinMode(OnNi, OUTPUT);
pinMode(Butt, INPUT);
pinMode(Sel, INPUT);
}
void loop() {
if(digitalRead(Sel)==LOW)
{
if(digitalRead(Butt)==LOW&&flag==0)//если кнопка нажата, на РВ3 лог 0 и переменная flag равна 0
{
regim++;
flag=1;
if(regim>4)//количество режимов
{
regim=1;//переключать режимы будем циклично
}
}
if(digitalRead(Butt)==HIGH&&flag==1)//если кнопка НЕ нажата и переменная flag равна - 1
{
flag=0;//обнуляем переменную
}
if(regim==1)//первый режим
{
digitalWrite(Curr, LOW);// ток "MIN"
digitalWrite(OnLi, HIGH);// запрет Li-IO
digitalWrite(OnNi, LOW);// выбран Ni-Mh
}
if(regim==2)//второй режим
{
digitalWrite(Curr, HIGH);// ток "MAX"
digitalWrite(OnLi, HIGH);// запрет Li-IO
digitalWrite(OnNi, LOW);// выбран Ni-Mh
}
if(regim==3)//третий режим
{
digitalWrite(Curr, LOW);// ток "MIN"
digitalWrite(OnLi, LOW);// выбран Li-IO
digitalWrite(OnNi, HIGH);// запрет Ni-Mh
}
if(regim==4)//четвертый режим
{
digitalWrite(Curr, HIGH);// ток "MAX"
digitalWrite(OnLi, LOW);// выбран Li-IO
digitalWrite(OnNi, HIGH);// запрет Ni-Mh
}
}
}
вот этот код в Ардуино работает как надо:
int Butt = 3;// кнопка
int Curr = 4;// переключение тока
int OnLi = 5;// включение LI-Io
int OnNi = 6;// включение Ni-Mh
int Sel = 2;// порт разрешения считывания состояний кнопки
int regim=1;
int flag=0;
//long previousMillis = 0;
void setup() {
pinMode(Curr, OUTPUT);
pinMode(OnLi, OUTPUT);
pinMode(OnNi, OUTPUT);
pinMode(Butt, INPUT);
pinMode(Sel, INPUT);
}
void loop() {
if(digitalRead(3)==LOW&&flag==0&&(digitalRead(2)==LOW))//если кнопка нажата, на вхорде 2 лог 0 и перемення flag равна 0 , то ...
{
//millis() - previousMillis >50;
regim++;
flag=1;
if(regim>4)//ограничим количество режимов
{
regim=1;//так как мы используем только одну кнопку,то переключать режимы будем циклично
}
}
if(digitalRead(3)==HIGH&&flag==1)//если кнопка НЕ нажата и переменная flag равна - 1 ,то ...
{
flag=0;//обнуляем переменную
}
if(regim==1)//первый режим
{
digitalWrite(Curr, LOW);// ток "MIN"
digitalWrite(OnLi, HIGH);// запрет Li-IO
digitalWrite(OnNi, LOW);// выбран Ni-Mh
}
if(regim==2)//второй режим
{
digitalWrite(Curr, HIGH);// ток "MAX"
digitalWrite(OnLi, HIGH);// запрет Li-IO
digitalWrite(OnNi, LOW);// выбран Ni-Mh
}
if(regim==3)//третий режим
{
digitalWrite(Curr, LOW);// ток "MIN"
digitalWrite(OnLi, LOW);// выбран Li-IO
digitalWrite(OnNi, HIGH);// запрет Ni-Mh
}
if(regim==4)//четвертый режим
{
digitalWrite(Curr, HIGH);// ток "MAX"
digitalWrite(OnLi, LOW);// выбран Li-IO
digitalWrite(OnNi, HIGH);// запрет Ni-Mh
}
}
в общем, победил я это )))))))))))
в чём причина была - хз, но оба кода в этом сообщении работают как надо: светодиодики переключаются "чисто", без паразитных засветов и прочего непотребства.
грешу на провода, которым подключал Тини13 на макетке, ибо ничего другого я не менял.
ну и условие чтения порта РВ3 задал в самом начале тела программы.
спасибо всем кто помогал!
гуртом и батька бити веселише(с)
з.ы. так я теперь великий программист - уже вторую программу написал!
скоро буду издавать книгу - "Моя борьба"(о программировании, а не то што вы подумали).
Ребята, не понимаю в чем трабла, пробовал два ябра 0.22 и пофикшеное и оригинальное, но есть две проьблемы которые не знаю как победить:
1. Delay работает некорректно, там где 9 секунд по факту чуть более 11 выходит. это частота 1,2. если ставить больше или меньше, то соответвенно увеличивается или уменьшается. это для ардуино 1.6.6, в 1.6.9 там вообще задержки не заработали. пробовал менять delay() на _delay_ms(), но стало хуже.
2. цикл вайл работает непонятно - выходит из цикла когда захочется. На первом проходе loop, обычно, один раз выполняет тело цикла и второй раз луп включает.
Ребята, не понимаю в чем трабла, пробовал два ябра 0.22 и пофикшеное и оригинальное, но есть две проьблемы которые не знаю как победить:
1. Delay работает некорректно, там где 9 секунд по факту чуть более 11 выходит. это частота 1,2. если ставить больше или меньше, то соответвенно увеличивается или уменьшается. это для ардуино 1.6.6, в 1.6.9 там вообще задержки не заработали. пробовал менять delay() на _delay_ms(), но стало хуже.
2. цикл вайл работает непонятно - выходит из цикла когда захочется. На первом проходе loop, обычно, один раз выполняет тело цикла и второй раз луп включает.
4) Зачем запускать помпу на 12 сек, ведь не известно хватит ли воды или наоборот перебор. Затем ждать секунду и моргать херову тучу раз, не известно что этим сигнализируя.
Почему просто не замерять постоянно влажность и если не хватает то включить помпу на несколько секунд, замерить снова и т.д.
А индекатор например включать только в том случае если всё ОК или НЕ ОК.
Да и вот ещё, попробуй работать на частоте 9,6MHz.
Ребята, не понимаю в чем трабла, пробовал два ябра 0.22 и пофикшеное и оригинальное, но есть две проьблемы которые не знаю как победить:
1. Delay работает некорректно, там где 9 секунд по факту чуть более 11 выходит. это частота 1,2. если ставить больше или меньше, то соответвенно увеличивается или уменьшается. это для ардуино 1.6.6, в 1.6.9 там вообще задержки не заработали. пробовал менять delay() на _delay_ms(), но стало хуже.
2. цикл вайл работает непонятно - выходит из цикла когда захочется. На первом проходе loop, обычно, один раз выполняет тело цикла и второй раз луп включает.
И задержки delay больше 3000 лучше не использовать заменить на милис.
Т.е. использовать бесконечные циклы с выходом по милис??? ну мне не нравится идея заставлять микроконтроллер батрачить просто так, да и сама милис тоже проглючивает(((
Zahar пишет:
Попробуй использовать версию 1,0,5. Мне кажеться она корректнее работает.
По поводу кода, мне кажеться он какойто кривоватенький.
1) Для чего 17,18,19 строки? Их можно перенести в setup.
4) Зачем запускать помпу на 12 сек, ведь не известно хватит ли воды или наоборот перебор. Затем ждать секунду и моргать херову тучу раз, не известно что этим сигнализируя.
Почему просто не замерять постоянно влажность и если не хватает то включить помпу на несколько секунд, замерить снова и т.д.
А индекатор например включать только в том случае если всё ОК или НЕ ОК.
Да и вот ещё, попробуй работать на частоте 9,6MHz.
для версии 1.0.5 коре создает толстопопые скетчи, я в 1 кб не влезу.
1-3 пофикшу и попробую
4) это автоматическая поливалка, влажность почвы измеряю перед поливом. если помпа даже поработает в хоолостую - не смертельно.
влагометр и выход для воды не в одном месте, потому нужно время чб вода доехала до влагометра, при этом нужно избежать болота, потому предложенный механизм не покатит.
Индикатором я мигаю чб понять что все работает(дебаг) и батарейка не сдохла. раз в 10 секунд мигнуть не смертельно опять же. А вот цикл проверки раз в пол часа. с такой частотой мигать мне не улыбается, дебажить не реально.
у меня на частоте 9.6 больше для delay(1000) по факту 10 секунд задержка
Т.е. использовать бесконечные циклы с выходом по милис??? ну мне не нравится идея заставлять микроконтроллер батрачить просто так, да и сама милис тоже проглючивает(((
--В схеме подтяните резистором ресет к VCC, это обязательно, иначе будут не произвольные ресеты.
--функция delay тоже не останавливает контроллер, он просто стоит в ней и щелкает. Выше 3000 особенно в тини она работает плохо!
millis()
Возвращает количество миллисекунд с момента начала выполнения текущей программы на плате Arduino. Это количество сбрасывается на ноль, в следствие переполнения значения, приблизительно через 50 дней.
для версии 1.0.5 коре создает толстопопые скетчи, я в 1 кб не влезу.
1-3 пофикшу и попробую
4) это автоматическая поливалка, влажность почвы измеряю перед поливом. если помпа даже поработает в хоолостую - не смертельно.
влагометр и выход для воды не в одном месте, потому нужно время чб вода доехала до влагометра, при этом нужно избежать болота, потому предложенный механизм не покатит.
Индикатором я мигаю чб понять что все работает(дебаг) и батарейка не сдохла. раз в 10 секунд мигнуть не смертельно опять же. А вот цикл проверки раз в пол часа. с такой частотой мигать мне не улыбается, дебажить не реально.
у меня на частоте 9.6 больше для delay(1000) по факту 10 секунд задержка
Засунул твой скетч в 1.0.5 = 556 байт, так что всё влезает.
и ещё, мне кажется что такое устройство проще сделать без МК, на 555 таймере или триггере
норма, там потребление у движка 200макс, у меня на 50мА отлично работает). я не хочу сенсор постоянно включенным держать, зачем опыты по электролизу в горшке??? сенсор раствориться.
millis()
Возвращает количество миллисекунд с момента начала выполнения текущей программы на плате Arduino. Это количество сбрасывается на ноль, в следствие переполнения значения, приблизительно через 50 дней.
По схеме как уже заметили выше есть вопросы, дополнил вашу схему и считаю что это необходимый минимум чтоб работало.
1) -резистор на ресет 10К или около
2) -резистор подтяжки мосфета к земле нужен 10К или около, если не поставите будет закрываться в линейном режиме сгорит.
3) -резистор на затвор мосфета от 150 до 300 чтоб защитить порт тини13
4) -кондеры по питанию тини13 и движка обязательны! на тини13 от 10 до 50, на движок от 100 и выше.
5) -и это при условии что ключ должен от 5В открываться, с материнок самое то.
1) уже сделал
2) от чего сгорит,у меня там сопротивление ток ограничивает через сток???
3) тут тоже не понимаю, зачем порт спосать от полевика??? там же не считая токов утечек через врата только напряжение на них, или я что-то не понимаю???
4) конденсаторы тоже не понимаю за чем, во первых в стабилизаторах они уже наверняка какие-то присутвуют, во вторых токи потребления в первом случае будет где-то в раене 30-40мА, во втором 50мА. Плюс сами сабилизаторы с защитой и не отдадут более 100мА на нос. поэтому не понимаю зачем там кондеры???
5) это я так понял предлагаете от юсб запитываться??? мне мобильность важнее, я от кроны питаюсь)
2) от чего сгорит,у меня там сопротивление ток ограничивает через сток???
3) тут тоже не понимаю, зачем порт спосать от полевика??? там же не считая токов утечек через врата только напряжение на них, или я что-то не понимаю???
4) конденсаторы тоже не понимаю за чем, во первых в стабилизаторах они уже наверняка какие-то присутвуют, во вторых токи потребления в первом случае будет где-то в раене 30-40мА, во втором 50мА. Плюс сами сабилизаторы с защитой и не отдадут более 100мА на нос. поэтому не понимаю зачем там кондеры???
5) это я так понял предлагаете от юсб запитываться??? мне мобильность важнее, я от кроны питаюсь)
2-мосфет расчитан на работу в режиме ключа, если будет медленно закрываться он будет дополнительным сопротивлением в цепи и может не выдержать по тепловыделению.
3-затвор мосфета это кандер при открытии токи там в импульсе АЦЦКИЕ порт может не выдержать, резистор их ограничивает. Вот хорошая статья.
4-в линейных стабилизаторах по даташиту положенны конденсаторы.
5-вы не писали что от батарейки, тогда линейные стабилизаторы это лажа они выжрут батарейку(((
Подобрать источник питания чтоб питал и тини а насос .
сколько нужно насосу чтоб качал?
--Например взять две банки литиевых АКБ и последовательно соединить, насос питается от двух банок а тини отпервой.Заряжать отсоединяя, паралельно чтоб балансировались.
--можно взять сборку полседовательных пальчиков тини от трех вольт, а насос от всей сборки.
--или одна банка лития от нее питается тини и от нее повышающий ДС питает насос.
Наконец-то дошли руки до драйвера моторов на мосфетных полумостах АО4606 .. поднял схемку (тут в проектах обсуждалась), перечитал и заценил решение с применением ATtiny (пост №254 в той темки кажись) .. но, возник вопрос по организации I2C на базе тинек. Пошукал поиском и как-то "не нашлось".
Соответственно, киньте в меня ссылками, где можно взять образец кода реализации I2C-slave для Attiny.
А равно интересны советы какую конкретно тиньку есть смысл использовать? Хочется в результате получить DC-motor shield, способный получать команды по I2C "интеллектуального" уровня, типа "включить мотор вперед на 3сек со скоростью 250об/мин" и имеющий вход энкодера и контроль напряжения аккумуляторов для коррекции ШИМ по мере разряда аккумов с сохранением требуемой скорости моторов. Можно ли найти тиньку для управления сразу несколькими моторами (2/4шт)?
Да, желательный размер платы шилда надо упихать в 32х40 .. 40х56 .. 32х56 мм :)
Примерно. Не знаю пока какую конкретно тиньку взять. Само обсуждение было в этой теме пост 254 - схема под программное управление. Надо 1 простой выход и 2 ШИМ канала на управление 1 мотором. По идее, тинька тянет (на пред. стр. есть примеры), остается вопрос связи по I2C или какой ещё протокол с "главной мегой".
Примерно. Не знаю пока какую конкретно тиньку взять. Само обсуждение было в этой теме пост 254 - схема под программное управление. Надо 1 простой выход и 2 ШИМ канала на управление 1 мотором. По идее, тинька тянет (на пред. стр. есть примеры), остается вопрос связи по I2C или какой ещё протокол с "главной мегой".
Я писал у тини всего один таймер и он занят в том посте для ШИМ, апаратного И2С нет поэтому нужно делать програмно, но для этого таймеров уже не остается. Управление моторами она потянет, но на получение команд и ответ ее не хватит. Берите другой камень.
Не очень понял зачем требуется отдельный таймер для реализации программного I2C, ну да ладно. 8-и ногие корпуса отпадают, поскольку хочется ещё иметь контроль за питанием моторов с целью компенсации разряда аккумуляторов и энкодер "на борту" с целью реализции интеллектуальных команд типа "проедь-ка мне 4 сантиметра вперед"...
Нашел 24-ю тиньку (SOIC-14) по 0.5у.е., вроде как с I2C, но у нее 4 канала ШИМ замешаны с выходами для I2C .. на управление 2-я моторами не годится.
подскажите пожалуйста есть ли возможность сделать пробник (электрика) чтобы он показывал напряжение хотябы интуитивно понятное 2 светодиода(красный плюс, зеленый минус) и в то же время можно было бы прозванивать цепи? желательно на тиньке сделать но можно и на про мини
подскажите пожалуйста есть ли возможность сделать пробник (электрика) чтобы он показывал напряжение хотябы интуитивно понятное 2 светодиода(красный плюс, зеленый минус) и в то же время можно было бы прозванивать цепи? желательно на тиньке сделать но можно и на про мини
В смысле есть некая коробка из которой торчит два провода, красный и черный. И мы тыкаем ими везде, и если ткнули полярность правильно то горит зеленый светодиод, если нет то красный.
подскажите пожалуйста есть ли возможность сделать пробник (электрика) чтобы он показывал напряжение хотябы интуитивно понятное 2 светодиода(красный плюс, зеленый минус) и в то же время можно было бы прозванивать цепи? желательно на тиньке сделать но можно и на про мини
В смысле есть некая коробка из которой торчит два провода, красный и черный. И мы тыкаем ими везде, и если ткнули полярность правильно то горит зеленый светодиод, если нет то красный.
подскажите пожалуйста есть ли возможность сделать пробник (электрика) чтобы он показывал напряжение хотябы интуитивно понятное 2 светодиода(красный плюс, зеленый минус) и в то же время можно было бы прозванивать цепи? желательно на тиньке сделать но можно и на про мини
В смысле есть некая коробка из которой торчит два провода, красный и черный. И мы тыкаем ими везде, и если ткнули полярность правильно то горит зеленый светодиод, если нет то красный.
Или вы имели что-то другое ввиду???
да именно так, но еще и должна быть прозвонка, нечто подобное используют автоэлектрики...
Добрый день, народ! Не знал куда написать, поэтому пишу сюда, есть проблема с Attiny13A - попытался залить загрузчик ардуино в него:
1) подключил USBasp программатор согласно схеме
2) скачал платформу Attiny13 для ардуино, закинул в папку hardware
3) выбрал платформу и частоту 1.2МГц, программатор USBasp
4) нажал "записать загрузчик"
в итоге Arduino IDE ругнулся большой и длинной ошибкой, загрузчик соответственно не прошился... ну так как тиньки у меня не новые, подумал что именно эта палёная, проверил в AVRDUDE - фьюзы не читаются, кристалл не стирается, махнул рукой, вставил вторую... и получил ещё одну палёную/залоченную тиньку...
Ну собственно вопрос - что это вообще было, можно ли воскресить мк и что я делал не так? Любые файлы, логи, скрины и фото предоставлю, так как тема мне интересна и хочется разобраться.
Добрый день, народ! Не знал куда написать, поэтому пишу сюда, есть проблема с Attiny13A - попытался залить загрузчик ардуино в него:
1) подключил USBasp программатор согласно схеме
2) скачал платформу Attiny13 для ардуино, закинул в папку hardware
3) выбрал платформу и частоту 1.2МГц, программатор USBasp
4) нажал "записать загрузчик"
в итоге Arduino IDE ругнулся большой и длинной ошибкой, загрузчик соответственно не прошился... ну так как тиньки у меня не новые, подумал что именно эта палёная, проверил в AVRDUDE - фьюзы не читаются, кристалл не стирается, махнул рукой, вставил вторую... и получил ещё одну палёную/залоченную тиньку...
Ну собственно вопрос - что это вообще было, можно ли воскресить мк и что я делал не так? Любые файлы, логи, скрины и фото предоставлю, так как тема мне интересна и хочется разобраться.
---Объем памяти тини13 очень мал, поэтому загрузчик туда никто не льет.
Пишите код под тини13 дальше компилируете его в hex и его льете в тини по четырем проводками MISO, MOSI, SCK, Reset.
Для загрузки можно использовать USBasp или любую ардуино.
В ютюбе есть русское видео можно наглядно посмотреть.
---Если вы залочили контроллер то его как и любой контроллер AVR можно разлочить высоковольтным программатором, но это уже сложнее, но в поиске на русском тоже полно инфы.
MkTwo, зачем там загрузчик, если у Вас есть программатор??? Скетчи загружаются элементарно через ту же Arduino IDE: "Файл" - "Загрузить с помощью программатора".
MkTwo, зачем там загрузчик, если у Вас есть программатор??? Скетчи загружаются элементарно через ту же Arduino IDE: "Файл" - "Загрузить с помощью программатора".
Весь нюанс в том, что сейчас я не могу даже очистить кристалл через тот же AVRDUDE... Вот что пишет:
Cформированная командная строка:
avrdude.exe -p t13 -c usbasp -P usb -e
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0xffff07
avrdude.exe: Expected signature for ATtiny13 is 1E 90 07
Double check chip, or use -F to override this check.
avrdude.exe done. Thank you.
Выскакивает ошибка что программируемый контроллер не обнаружен.
спасибо огромное, действительно, поставил перемычку и всё прочиталось) уточните пожалуйста насчёт вообще системы заливки скетчей напрямую в микроконтроллеры - как я думал, загрузчик, который заливается из Arduino IDE это своеобразный компилятор скетча ардуино в язык микроконтроллера, а получается что можно скетчи напрямую в мк заливать? зачем тогда нужен загрузчик вообще?
спасибо огромное, действительно, поставил перемычку и всё прочиталось) уточните пожалуйста насчёт вообще системы заливки скетчей напрямую в микроконтроллеры - как я думал, загрузчик, который заливается из Arduino IDE это своеобразный компилятор скетча ардуино в язык микроконтроллера, а получается что можно скетчи напрямую в мк заливать? зачем тогда нужен загрузчик вообще?
Загрузчик находится в памяти самого МК и позволяет его прошивать по двум проводам RX и TX больше он не для чего не нужен, еще он занимает в памяти МК от 500 до 700Kb.
получается, если есть программатор, то можно просто выбрать "Программатор - USBasp" и заливать по кнопке "Загрузить через программатор"? никаких загрузчиков записывать предварительно не надо? а то я на ATmega8A сначала записал загрузчик, а потом заливаю скетчи как в обычную ардуино...
и ещё вопрос - залил blink в ардуино, там delay(1000); стандартный, так он мигает примерно в 10 раз реже... я как понимаю эта тема известная наверное, можете дать ссылку где можно почитать про это?
да я цеплял резистор, а программно не получается - пишет "was not declared in scope"
трабл,
дома с макеткой нужно глянуть, почему не работает как нужно.
отож...
самое прикольное, что если заливать в Ардуино - то всё работает как надо (даже без указания что делать при РВ3=1).
а вот в Тини13... (
upd.
может надо применить что-то вроде оператора Switch?
но не понятно почему в Ардуино работаеткод, а тут нет.
karl2233 Подправил в протеусе все работает,
в архиве проект протеуса и скетч.
огроменное спасибо!
подскажи пожалуйста, как сделать так, что б когда на РВ3 была лог 1 кнопка не изменяла состояние портов.
а то щас получается так:
1. на порту РВ3 лог 0 - всё переключает как надо.
2. отключаю порт РВ3 от общего(он через резистор 10к на +5В) и светодиоды на портах РВ0-РВ2 светят тусклее, значит там не лог 1 а что-то среднее. А если нажать кнопку то светодиоды на портах РВ0-РВ2 зажигаются хаотически, т.е. кнопка действует.
3. Мало того, когда отключаю РВ3 от общего, то сотояние портов изменяется на то, которого нет в скетче(т.е. получается дополнительный режим какой-то).
вот, так уже лучше стало:
вот этот код в Ардуино работает как надо:
в общем, победил я это )))))))))))
в чём причина была - хз, но оба кода в этом сообщении работают как надо: светодиодики переключаются "чисто", без паразитных засветов и прочего непотребства.
грешу на провода, которым подключал Тини13 на макетке, ибо ничего другого я не менял.
ну и условие чтения порта РВ3 задал в самом начале тела программы.
спасибо всем кто помогал!
гуртом и батька бити веселише(с)
з.ы. так я теперь великий программист - уже вторую программу написал!
скоро буду издавать книгу - "Моя борьба"(о программировании, а не то што вы подумали).
I need help!!!
Ребята, не понимаю в чем трабла, пробовал два ябра 0.22 и пофикшеное и оригинальное, но есть две проьблемы которые не знаю как победить:
1. Delay работает некорректно, там где 9 секунд по факту чуть более 11 выходит. это частота 1,2. если ставить больше или меньше, то соответвенно увеличивается или уменьшается. это для ардуино 1.6.6, в 1.6.9 там вообще задержки не заработали. пробовал менять delay() на _delay_ms(), но стало хуже.
2. цикл вайл работает непонятно - выходит из цикла когда захочется. На первом проходе loop, обычно, один раз выполняет тело цикла и второй раз луп включает.
использую Attiny13A PU, шью через USBasp.
вот скетч
I need help!!!
Ребята, не понимаю в чем трабла, пробовал два ябра 0.22 и пофикшеное и оригинальное, но есть две проьблемы которые не знаю как победить:
1. Delay работает некорректно, там где 9 секунд по факту чуть более 11 выходит. это частота 1,2. если ставить больше или меньше, то соответвенно увеличивается или уменьшается. это для ардуино 1.6.6, в 1.6.9 там вообще задержки не заработали. пробовал менять delay() на _delay_ms(), но стало хуже.
2. цикл вайл работает непонятно - выходит из цикла когда захочется. На первом проходе loop, обычно, один раз выполняет тело цикла и второй раз луп включает.
использую Attiny13A PU, шью через USBasp.
вот скетч
Схему подключения выложите.
И задержки delay больше 3000 лучше не использовать заменить на милис.
Попробуй использовать версию 1,0,5. Мне кажеться она корректнее работает.
По поводу кода, мне кажеться он какойто кривоватенький.
1) Для чего 17,18,19 строки? Их можно перенести в setup.
2) В 23 строке, почему int а не boolean?
3) В 23 строке, почему 4 а не hydrometrData?
4) Зачем запускать помпу на 12 сек, ведь не известно хватит ли воды или наоборот перебор. Затем ждать секунду и моргать херову тучу раз, не известно что этим сигнализируя.
Почему просто не замерять постоянно влажность и если не хватает то включить помпу на несколько секунд, замерить снова и т.д.
А индекатор например включать только в том случае если всё ОК или НЕ ОК.
Да и вот ещё, попробуй работать на частоте 9,6MHz.
I need help!!!
Ребята, не понимаю в чем трабла, пробовал два ябра 0.22 и пофикшеное и оригинальное, но есть две проьблемы которые не знаю как победить:
1. Delay работает некорректно, там где 9 секунд по факту чуть более 11 выходит. это частота 1,2. если ставить больше или меньше, то соответвенно увеличивается или уменьшается. это для ардуино 1.6.6, в 1.6.9 там вообще задержки не заработали. пробовал менять delay() на _delay_ms(), но стало хуже.
2. цикл вайл работает непонятно - выходит из цикла когда захочется. На первом проходе loop, обычно, один раз выполняет тело цикла и второй раз луп включает.
использую Attiny13A PU, шью через USBasp.
вот скетч
Схему подключения выложите.
И задержки delay больше 3000 лучше не использовать заменить на милис.
Т.е. использовать бесконечные циклы с выходом по милис??? ну мне не нравится идея заставлять микроконтроллер батрачить просто так, да и сама милис тоже проглючивает(((
Попробуй использовать версию 1,0,5. Мне кажеться она корректнее работает.
По поводу кода, мне кажеться он какойто кривоватенький.
1) Для чего 17,18,19 строки? Их можно перенести в setup.
2) В 23 строке, почему int а не boolean?
3) В 23 строке, почему 4 а не hydrometrData?
4) Зачем запускать помпу на 12 сек, ведь не известно хватит ли воды или наоборот перебор. Затем ждать секунду и моргать херову тучу раз, не известно что этим сигнализируя.
Почему просто не замерять постоянно влажность и если не хватает то включить помпу на несколько секунд, замерить снова и т.д.
А индекатор например включать только в том случае если всё ОК или НЕ ОК.
Да и вот ещё, попробуй работать на частоте 9,6MHz.
для версии 1.0.5 коре создает толстопопые скетчи, я в 1 кб не влезу.
1-3 пофикшу и попробую
4) это автоматическая поливалка, влажность почвы измеряю перед поливом. если помпа даже поработает в хоолостую - не смертельно.
влагометр и выход для воды не в одном месте, потому нужно время чб вода доехала до влагометра, при этом нужно избежать болота, потому предложенный механизм не покатит.
Индикатором я мигаю чб понять что все работает(дебаг) и батарейка не сдохла. раз в 10 секунд мигнуть не смертельно опять же. А вот цикл проверки раз в пол часа. с такой частотой мигать мне не улыбается, дебажить не реально.
у меня на частоте 9.6 больше для delay(1000) по факту 10 секунд задержка
Т.е. использовать бесконечные циклы с выходом по милис??? ну мне не нравится идея заставлять микроконтроллер батрачить просто так, да и сама милис тоже проглючивает(((
--В схеме подтяните резистором ресет к VCC, это обязательно, иначе будут не произвольные ресеты.
--функция delay тоже не останавливает контроллер, он просто стоит в ней и щелкает. Выше 3000 особенно в тини она работает плохо!
--В схеме подтяните резистором ресет к VCC, это обязательно, иначе будут не произвольные ресеты.
--функция delay тоже не останавливает контроллер, он просто стоит в ней и щелкает. Выше 3000 особенно в тини она работает плохо!
какое максимальное значение отдает millis()??
за ресет спс
2N7000 всего 400мА - для движка нормально будет?
и ещё, мне кажется что такое устройство проще сделать без МК, на 555 таймере или триггере
какое максимальное значение отдает millis()??
за ресет спс
Переменная нужна unsigned long, гуглится легко
для версии 1.0.5 коре создает толстопопые скетчи, я в 1 кб не влезу.
1-3 пофикшу и попробую
4) это автоматическая поливалка, влажность почвы измеряю перед поливом. если помпа даже поработает в хоолостую - не смертельно.
влагометр и выход для воды не в одном месте, потому нужно время чб вода доехала до влагометра, при этом нужно избежать болота, потому предложенный механизм не покатит.
Индикатором я мигаю чб понять что все работает(дебаг) и батарейка не сдохла. раз в 10 секунд мигнуть не смертельно опять же. А вот цикл проверки раз в пол часа. с такой частотой мигать мне не улыбается, дебажить не реально.
у меня на частоте 9.6 больше для delay(1000) по факту 10 секунд задержка
Засунул твой скетч в 1.0.5 = 556 байт, так что всё влезает.
зачем на схеме R2, чтобы греть вселенную?
MOSFET поставь из старой материнки или IRL3705.
T3RAN13
По схеме как уже заметили выше есть вопросы, дополнил вашу схему и считаю что это необходимый минимум чтоб работало.
-резистор на ресет 10К или около
-резистор подтяжки мосфета к земле нужен 10К или около, если не поставите будет закрываться в линейном режиме сгорит.
-резистор на затвор мосфета от 150 до 300 чтоб защитить порт тини13
-кондеры по питанию тини13 и движка обязательны! на тини13 от 10 до 50, на движок от 100 и выше.
-и это при условии что ключ должен от 5В открываться, с материнок самое то.
а может у кого есть работающая и проверенная схема 4-х сенсорных кнопок на Attiny13/85?
Выход - 4 линии LO/HIGH, или в SoftwareSerial, или любой другой способ кодирования по двум проводам.
2N7000 всего 400мА - для движка нормально будет?
и ещё, мне кажется что такое устройство проще сделать без МК, на 555 таймере или триггере
норма, там потребление у движка 200макс, у меня на 50мА отлично работает). я не хочу сенсор постоянно включенным держать, зачем опыты по электролизу в горшке??? сенсор раствориться.
Переменная нужна unsigned long, гуглится легко
спасибо, у нас не ардуина, потому и спрашиваю
T3RAN13
По схеме как уже заметили выше есть вопросы, дополнил вашу схему и считаю что это необходимый минимум чтоб работало.
1) -резистор на ресет 10К или около
2) -резистор подтяжки мосфета к земле нужен 10К или около, если не поставите будет закрываться в линейном режиме сгорит.
3) -резистор на затвор мосфета от 150 до 300 чтоб защитить порт тини13
4) -кондеры по питанию тини13 и движка обязательны! на тини13 от 10 до 50, на движок от 100 и выше.
5) -и это при условии что ключ должен от 5В открываться, с материнок самое то.
1) уже сделал
2) от чего сгорит,у меня там сопротивление ток ограничивает через сток???
3) тут тоже не понимаю, зачем порт спосать от полевика??? там же не считая токов утечек через врата только напряжение на них, или я что-то не понимаю???
4) конденсаторы тоже не понимаю за чем, во первых в стабилизаторах они уже наверняка какие-то присутвуют, во вторых токи потребления в первом случае будет где-то в раене 30-40мА, во втором 50мА. Плюс сами сабилизаторы с защитой и не отдадут более 100мА на нос. поэтому не понимаю зачем там кондеры???
5) это я так понял предлагаете от юсб запитываться??? мне мобильность важнее, я от кроны питаюсь)
1) уже сделал
2) от чего сгорит,у меня там сопротивление ток ограничивает через сток???
3) тут тоже не понимаю, зачем порт спосать от полевика??? там же не считая токов утечек через врата только напряжение на них, или я что-то не понимаю???
4) конденсаторы тоже не понимаю за чем, во первых в стабилизаторах они уже наверняка какие-то присутвуют, во вторых токи потребления в первом случае будет где-то в раене 30-40мА, во втором 50мА. Плюс сами сабилизаторы с защитой и не отдадут более 100мА на нос. поэтому не понимаю зачем там кондеры???
5) это я так понял предлагаете от юсб запитываться??? мне мобильность важнее, я от кроны питаюсь)
2-мосфет расчитан на работу в режиме ключа, если будет медленно закрываться он будет дополнительным сопротивлением в цепи и может не выдержать по тепловыделению.
3-затвор мосфета это кандер при открытии токи там в импульсе АЦЦКИЕ порт может не выдержать, резистор их ограничивает. Вот хорошая статья.
4-в линейных стабилизаторах по даташиту положенны конденсаторы.
5-вы не писали что от батарейки, тогда линейные стабилизаторы это лажа они выжрут батарейку(((
5-вы не писали что от батарейки, тогда линейные стабилизаторы это лажа они выжрут батарейку(((
какие варианты для батарейки?
какие варианты для батарейки?
Оптимальнее всего вообще не преобразовывать.
Подобрать источник питания чтоб питал и тини а насос .
сколько нужно насосу чтоб качал?
--Например взять две банки литиевых АКБ и последовательно соединить, насос питается от двух банок а тини отпервой.Заряжать отсоединяя, паралельно чтоб балансировались.
--можно взять сборку полседовательных пальчиков тини от трех вольт, а насос от всей сборки.
--или одна банка лития от нее питается тини и от нее повышающий ДС питает насос.
Тогда мне проще солнечную батарею 12В с суперконденсатором на 100 фарад к текущей схеме прикрутить)
Но за помощ спасибо)
Тогда мне проще солнечную батарею 12В с суперконденсатором на 100 фарад к текущей схеме прикрутить)
Но за помощ спасибо)
Ваших возможностей не знаю, но кроны дорогие и стабы +насос их жрать будут пачками!)
Мне больше нравится связка солнечная+литий.
У суперконденсатора емкость большая но она считается от ноля, а нам для контроллера меньше 2В уже не пойдет. В одеале от 5В до 3В как раз под литий.
да, кондер 2,7 вольта, я думал 3,7, незадачка)
Оу, я рад что эта тема всё ещё живёт, а я то уже начал понемногу отходить от этого.
http://arduino.ru/forum/programmirovanie/stm32f103-arduino-ide
Народ! Если ногу Ресет замкнуть и держать на общий, тинька будет энергию батарейки жрать?
Народ! Если ногу Ресет замкнуть и держать на общий, тинька будет энергию батарейки жрать?
купи мультиметр и проверяй.
Спрошу тут.
Наконец-то дошли руки до драйвера моторов на мосфетных полумостах АО4606 .. поднял схемку (тут в проектах обсуждалась), перечитал и заценил решение с применением ATtiny (пост №254 в той темки кажись) .. но, возник вопрос по организации I2C на базе тинек. Пошукал поиском и как-то "не нашлось".
Соответственно, киньте в меня ссылками, где можно взять образец кода реализации I2C-slave для Attiny.
А равно интересны советы какую конкретно тиньку есть смысл использовать? Хочется в результате получить DC-motor shield, способный получать команды по I2C "интеллектуального" уровня, типа "включить мотор вперед на 3сек со скоростью 250об/мин" и имеющий вход энкодера и контроль напряжения аккумуляторов для коррекции ШИМ по мере разряда аккумов с сохранением требуемой скорости моторов. Можно ли найти тиньку для управления сразу несколькими моторами (2/4шт)?
Да, желательный размер платы шилда надо упихать в 32х40 .. 40х56 .. 32х56 мм :)
Arhat109-2
Может вы веткой ошиблись.
Вы хотите это все написать под тини13?
У нее всего один таймер и делать ШИМ и программный И2С не получится.
Подымайтесь до меги8 или выше168/328.
Примерно. Не знаю пока какую конкретно тиньку взять. Само обсуждение было в этой теме пост 254 - схема под программное управление. Надо 1 простой выход и 2 ШИМ канала на управление 1 мотором. По идее, тинька тянет (на пред. стр. есть примеры), остается вопрос связи по I2C или какой ещё протокол с "главной мегой".
Примерно. Не знаю пока какую конкретно тиньку взять. Само обсуждение было в этой теме пост 254 - схема под программное управление. Надо 1 простой выход и 2 ШИМ канала на управление 1 мотором. По идее, тинька тянет (на пред. стр. есть примеры), остается вопрос связи по I2C или какой ещё протокол с "главной мегой".
Я писал у тини всего один таймер и он занят в том посте для ШИМ, апаратного И2С нет поэтому нужно делать програмно, но для этого таймеров уже не остается. Управление моторами она потянет, но на получение команд и ответ ее не хватит. Берите другой камень.
А реализовать программный I2C не получится? Я собственно такой имел ввиду, когда спросил про образцы кода ..
А реализовать программный I2C не получится? Я собственно такой имел ввиду, когда спросил про образцы кода ..
я смотрю ответы на ваши вопросы через слово читаете, пост #930
Не очень понял зачем требуется отдельный таймер для реализации программного I2C, ну да ладно. 8-и ногие корпуса отпадают, поскольку хочется ещё иметь контроль за питанием моторов с целью компенсации разряда аккумуляторов и энкодер "на борту" с целью реализции интеллектуальных команд типа "проедь-ка мне 4 сантиметра вперед"...
Нашел 24-ю тиньку (SOIC-14) по 0.5у.е., вроде как с I2C, но у нее 4 канала ШИМ замешаны с выходами для I2C .. на управление 2-я моторами не годится.
подскажите пожалуйста есть ли возможность сделать пробник (электрика) чтобы он показывал напряжение хотябы интуитивно понятное 2 светодиода(красный плюс, зеленый минус) и в то же время можно было бы прозванивать цепи? желательно на тиньке сделать но можно и на про мини
подскажите пожалуйста есть ли возможность сделать пробник (электрика) чтобы он показывал напряжение хотябы интуитивно понятное 2 светодиода(красный плюс, зеленый минус) и в то же время можно было бы прозванивать цепи? желательно на тиньке сделать но можно и на про мини
В смысле есть некая коробка из которой торчит два провода, красный и черный. И мы тыкаем ими везде, и если ткнули полярность правильно то горит зеленый светодиод, если нет то красный.
Или вы имели что-то другое ввиду???
подскажите пожалуйста есть ли возможность сделать пробник (электрика) чтобы он показывал напряжение хотябы интуитивно понятное 2 светодиода(красный плюс, зеленый минус) и в то же время можно было бы прозванивать цепи? желательно на тиньке сделать но можно и на про мини
В смысле есть некая коробка из которой торчит два провода, красный и черный. И мы тыкаем ими везде, и если ткнули полярность правильно то горит зеленый светодиод, если нет то красный.
Или вы имели что-то другое ввиду???
да именно так, но еще и должна быть прозвонка
подскажите пожалуйста есть ли возможность сделать пробник (электрика) чтобы он показывал напряжение хотябы интуитивно понятное 2 светодиода(красный плюс, зеленый минус) и в то же время можно было бы прозванивать цепи? желательно на тиньке сделать но можно и на про мини
В смысле есть некая коробка из которой торчит два провода, красный и черный. И мы тыкаем ими везде, и если ткнули полярность правильно то горит зеленый светодиод, если нет то красный.
Или вы имели что-то другое ввиду???
да именно так, но еще и должна быть прозвонка, нечто подобное используют автоэлектрики...
Очередная поделка на тини13.
Видео с кратким описанием
Видео работы под музыку
Страничка где все расписано.
Добрый день, народ! Не знал куда написать, поэтому пишу сюда, есть проблема с Attiny13A - попытался залить загрузчик ардуино в него:
1) подключил USBasp программатор согласно схеме
2) скачал платформу Attiny13 для ардуино, закинул в папку hardware
3) выбрал платформу и частоту 1.2МГц, программатор USBasp
4) нажал "записать загрузчик"
в итоге Arduino IDE ругнулся большой и длинной ошибкой, загрузчик соответственно не прошился... ну так как тиньки у меня не новые, подумал что именно эта палёная, проверил в AVRDUDE - фьюзы не читаются, кристалл не стирается, махнул рукой, вставил вторую... и получил ещё одну палёную/залоченную тиньку...
Ну собственно вопрос - что это вообще было, можно ли воскресить мк и что я делал не так? Любые файлы, логи, скрины и фото предоставлю, так как тема мне интересна и хочется разобраться.
Добрый день, народ! Не знал куда написать, поэтому пишу сюда, есть проблема с Attiny13A - попытался залить загрузчик ардуино в него:
1) подключил USBasp программатор согласно схеме
2) скачал платформу Attiny13 для ардуино, закинул в папку hardware
3) выбрал платформу и частоту 1.2МГц, программатор USBasp
4) нажал "записать загрузчик"
в итоге Arduino IDE ругнулся большой и длинной ошибкой, загрузчик соответственно не прошился... ну так как тиньки у меня не новые, подумал что именно эта палёная, проверил в AVRDUDE - фьюзы не читаются, кристалл не стирается, махнул рукой, вставил вторую... и получил ещё одну палёную/залоченную тиньку...
Ну собственно вопрос - что это вообще было, можно ли воскресить мк и что я делал не так? Любые файлы, логи, скрины и фото предоставлю, так как тема мне интересна и хочется разобраться.
---Объем памяти тини13 очень мал, поэтому загрузчик туда никто не льет.
Пишите код под тини13 дальше компилируете его в hex и его льете в тини по четырем проводками MISO, MOSI, SCK, Reset.
Для загрузки можно использовать USBasp или любую ардуино.
В ютюбе есть русское видео можно наглядно посмотреть.
---Если вы залочили контроллер то его как и любой контроллер AVR можно разлочить высоковольтным программатором, но это уже сложнее, но в поиске на русском тоже полно инфы.
MkTwo, зачем там загрузчик, если у Вас есть программатор??? Скетчи загружаются элементарно через ту же Arduino IDE: "Файл" - "Загрузить с помощью программатора".
MkTwo, зачем там загрузчик, если у Вас есть программатор??? Скетчи загружаются элементарно через ту же Arduino IDE: "Файл" - "Загрузить с помощью программатора".
Весь нюанс в том, что сейчас я не могу даже очистить кристалл через тот же AVRDUDE... Вот что пишет:
Выскакивает ошибка что программируемый контроллер не обнаружен.
Выскакивает ошибка что программируемый контроллер не обнаружен.
Нет, ошибка другая - контроллер обнаружен, но некорректно считалась его сигнатура. Вероятные причины:
- слишком длинные провода от программатора до микроконтроллера (желательно не более 15-20 см)
- МК работает на маленькой частоте (1,2 МГц), тогда на самом USBasp нужно установить джампер JP3 для понижения частоты программирования.
спасибо огромное, действительно, поставил перемычку и всё прочиталось) уточните пожалуйста насчёт вообще системы заливки скетчей напрямую в микроконтроллеры - как я думал, загрузчик, который заливается из Arduino IDE это своеобразный компилятор скетча ардуино в язык микроконтроллера, а получается что можно скетчи напрямую в мк заливать? зачем тогда нужен загрузчик вообще?
чтобы грузить скетчи через USB ардуины напрямую без программатора.
спасибо огромное, действительно, поставил перемычку и всё прочиталось) уточните пожалуйста насчёт вообще системы заливки скетчей напрямую в микроконтроллеры - как я думал, загрузчик, который заливается из Arduino IDE это своеобразный компилятор скетча ардуино в язык микроконтроллера, а получается что можно скетчи напрямую в мк заливать? зачем тогда нужен загрузчик вообще?
Загрузчик находится в памяти самого МК и позволяет его прошивать по двум проводам RX и TX больше он не для чего не нужен, еще он занимает в памяти МК от 500 до 700Kb.
bodriy2014, от 512 до 2048 Байт :-)
получается, если есть программатор, то можно просто выбрать "Программатор - USBasp" и заливать по кнопке "Загрузить через программатор"? никаких загрузчиков записывать предварительно не надо? а то я на ATmega8A сначала записал загрузчик, а потом заливаю скетчи как в обычную ардуино...
и ещё вопрос - залил blink в ардуино, там delay(1000); стандартный, так он мигает примерно в 10 раз реже... я как понимаю эта тема известная наверное, можете дать ссылку где можно почитать про это?