С чего начать программировать микроконтроллеры?
- SeregaT
- Генеральный секретарь МЯУ
- Сообщения: 18853
- Зарегистрирован: Пн сен 03, 2007 18:24:27
- Откуда: Россия. Омск.
- Контактная информация:
А электромагнитный импульс может влиять на мегу? Я на аппарат точечной сварки регулятор собирал, а там недалеко от местоположения меги 16 шина проходит, по которой во время сварки идёт ток несколько килоампер. Но девайс на меге находится в заземлённом металлическом корпусе и есть только небольшая дырка для проводов.
Кстати, один косяк я так и не смог пока побороть (не понял причину). Пока эту функцию совсем исключил из программы, завтра посмотрю что получится.
Кстати, один косяк я так и не смог пока побороть (не понял причину). Пока эту функцию совсем исключил из программы, завтра посмотрю что получится.
- Реклама
- Пухич
- Модератор
- Сообщения: 4673
- Зарегистрирован: Вс июн 01, 2008 00:17:35
- Откуда: Я всего лишь плод вашего воображения...
saschai писал(а):вобшем, когда пускатель щелкал, достаточно сильный удар на шасси, вот они и вылетали из панелек, как пробка из шампанского![]()
Пришлось извлекать и вешать на стенку:)), так, что всего не предусмотришь!
Мы тут как-то испытывали модификатор для льна, причем заводской, а не самодельный. Стоит на нем, значит, шкаф с реле и прочим.Ну мы подергали - вроде все в шкафу прочно стоит, правда гроверов нет.... А еще провода межрелюшечные просто в контакты реле зажаты (без клемм). Ну мы включаем..... А там ножи по 10000 оборотов дают... И подшипники дешевые..... И ножи несбаласированы.... Короче от козы и пожара спасло то, что отвалилось все разом - провода от релюшек, релюшки от корпуса, транс от всего этого и т.д.
Потом шкаф сняли с модификатора.
Знание - сила!
-
aleksandr-zh
- Сверлит текстолит когтями
- Сообщения: 1278
- Зарегистрирован: Пн июн 18, 2007 21:51:20
про обучение моего знакомого. они прослушал три моих "урока", сегодня принес первую поделку на МК
Программа составлена не оптимально под МК, но она Первая и Работает!
причем для новичка сложная: динамическая индикация на четырех семисегментных индикаторах
При этом схему я ему не дал, он по исходнику разобрался! Парень -молодец!
Сегодня рассказал ему про таймеры, аж загорелся парень. Приятно работать с теми, кто Хочет Учиться!
Вначале "лампочками помигает", а потом и выше пойдет
Все начинали с букваря, а не "Война и мир"
во вложенном файле 500 кБ - фото его первой поделки на МК
скриншоты видео - http://pic-avr.narod.ru/ScrShot.zip
само видео 4.8 мБ - http://pic-avr.narod.ru/MVI_0056.avi
Программа составлена не оптимально под МК, но она Первая и Работает!
причем для новичка сложная: динамическая индикация на четырех семисегментных индикаторах
При этом схему я ему не дал, он по исходнику разобрался! Парень -молодец!
Сегодня рассказал ему про таймеры, аж загорелся парень. Приятно работать с теми, кто Хочет Учиться!
Вначале "лампочками помигает", а потом и выше пойдет
Все начинали с букваря, а не "Война и мир"
во вложенном файле 500 кБ - фото его первой поделки на МК
скриншоты видео - http://pic-avr.narod.ru/ScrShot.zip
само видео 4.8 мБ - http://pic-avr.narod.ru/MVI_0056.avi
- Реклама
- SeregaT
- Генеральный секретарь МЯУ
- Сообщения: 18853
- Зарегистрирован: Пн сен 03, 2007 18:24:27
- Откуда: Россия. Омск.
- Контактная информация:
Пухич писал(а):А что за косяк?
Когда нажимали педаль, сперва должен включиться клапан прижимного устройства, затем трансформатор на несколько ms, а потом отключиться прижим. Когда он нажимал педаль, иногда после прижима не отпуская электрода после сварки, клапан и сварка резко включались снова, а это сильно замедляло процесс (я и так на задержки расщедрился, в моём понимании десяток другой миллисекунд роли не сыграют, а сварщик сказал что моя автоматика за ним не успевает).
Вот кусок кода, который косячил:
if (!PIND.4) // Если нажата педаль, выполняется автоматический сварочный цикл
{
delay_ms (1);
if (!PIND.4) // Антидребезг
{
PORTB.0=1;
delay_ms (a);
PORTB.1=1;
delay_ms (b);
PORTB.1=0;
PORTB.0=0;
while (!PIND.4); // Ждём, когда педаль будет отпущена
goto automat; // Переходим в начало цикла
}
}
Я потом немного понял, на что влияла помеха, и сделал вот такой код:
if (!PIND.4) // Если нажата педаль, выполняется автоматический сварочный цикл
{
delay_ms (1);
if (!PIND.4) // Антидребезг
{
PORTB.0=1;
delay_ms (a);
PORTB.1=1;
delay_ms (b);
PORTB.1=0;
PORTB.0=0;
delay_ms (2);
if (!PIND.4)
{
delay_ms (1);
if (!PIND.4)
{
while (1)
{
delay_ms (2);
if (PIND.4)
{
goto automat;
}
}
}
//delay_ms (c);
}
}
}
Я так понял, что в первом случае перед строчкой:
while (!PIND.4); // Ждём, когда педаль будет отпущена
можно было просто добавить небольшую задержку, но у меня и так заработало всё нормально и код переписывать не стал.
Кстати, могу похвастаться: Моё первое устройство на МК (которое используется в промышленном оборудовании а не дома на столе, чисто посмотреть) готово и сегодня показало хорошии результаты по производительности труда и стабильности.
Вот это устройство (панель делать было некогда, поэтому пока просто выпилил из старого куска оргстекла, который мне подвернулся):
А вот код, с которым всё нормально получилось (можно там немного оптимизировать с переходами по меткам туда-сюда, но работает и я трогать не стал, чтобы не накосячить):
- Вложения
-
- svarka.c
- (9.85 КБ) 301 скачивание
- Pippeytz
- Потрогал лапой паяльник
- Сообщения: 396
- Зарегистрирован: Ср май 28, 2008 19:30:31
- Откуда: Донецк
- Контактная информация:
Блин, есть может у кого нибудь рабочная билиотека на КС0066?
Ато у меня на етом контролере 2 панельки (Wiston 16x1 16x2), ниодна никаких признаков жизни не подает вобще, я даже не могу проверять живие они или вобще запоротые
Ато у меня на етом контролере 2 панельки (Wiston 16x1 16x2), ниодна никаких признаков жизни не подает вобще, я даже не могу проверять живие они или вобще запоротые
Последний раз редактировалось Pippeytz Ср май 20, 2009 18:58:44, всего редактировалось 3 раза.
Полный пипеутз.
-
aleksandr-zh
- Сверлит текстолит когтями
- Сообщения: 1278
- Зарегистрирован: Пн июн 18, 2007 21:51:20
а ты как сделал?
вот вопрос.
если я использую динамическую индикацию, я соединяю вс сегменты в одну шину, и каждый сегментный ряд забиваю на резистор.
в МК идет сигнал. это посылка тока. но вот что интересно. если мы зажигаем один сегмент, весль ток идет на этот сегмент. если зажигается много таких сегментов, то так распределяется по сегментам. и они становятся тусклыми. как от этого избавиться? или все будет хорошо? если да, то объясните плиз, т.к. мне не очень с этим понятно.
вот вопрос.
если я использую динамическую индикацию, я соединяю вс сегменты в одну шину, и каждый сегментный ряд забиваю на резистор.
в МК идет сигнал. это посылка тока. но вот что интересно. если мы зажигаем один сегмент, весль ток идет на этот сегмент. если зажигается много таких сегментов, то так распределяется по сегментам. и они становятся тусклыми. как от этого избавиться? или все будет хорошо? если да, то объясните плиз, т.к. мне не очень с этим понятно.
Не умеешь - не берись, но не взявшись не научишься...
-
aleksandr-zh
- Сверлит текстолит когтями
- Сообщения: 1278
- Зарегистрирован: Пн июн 18, 2007 21:51:20
- Пухич
- Модератор
- Сообщения: 4673
- Зарегистрирован: Вс июн 01, 2008 00:17:35
- Откуда: Я всего лишь плод вашего воображения...
Сергей, я вот этот кусок не понял:
Т.е. если педаль не отпущена еще, то мы, подождав зачем-то 1мс (это можно вообще убрать ИМХО), зашли в цикл, там идет бесконечный цикл, в котором идет задержка 2 мс, а потом проверка отпускания, и если отпускание произошло, то переходим на автомат. А вот если к началу этого кода педаль отпущена уже, то что - не переходим на автомат? Или так и должно быть по логике?
Я просто не совсем воткнул, что там ваш сварщик не успевает.
if (!PIND.4)
{
delay_ms (1);
if (!PIND.4)
{
while (1)
{
delay_ms (2);
if (PIND.4)
{
goto automat;
}
}
}
//delay_ms (c);
}
Т.е. если педаль не отпущена еще, то мы, подождав зачем-то 1мс (это можно вообще убрать ИМХО), зашли в цикл, там идет бесконечный цикл, в котором идет задержка 2 мс, а потом проверка отпускания, и если отпускание произошло, то переходим на автомат. А вот если к началу этого кода педаль отпущена уже, то что - не переходим на автомат? Или так и должно быть по логике?
Я просто не совсем воткнул, что там ваш сварщик не успевает.
Знание - сила!
-
aleksandr-zh
- Сверлит текстолит когтями
- Сообщения: 1278
- Зарегистрирован: Пн июн 18, 2007 21:51:20
совершенно верно
но многие считают что это - это лишние "заморочки" и игнорируют
а зря! читаем в даташите на МК:
DC Current per I/O Pin ........... 20.0 mA
The sum of all IOL, for all ports, should not exceed 60 mA.
т.е., на любую ножку порта - не более 40 мА, но на все порты суммарно - не более 60!!
Вывод: 8*20 не равно 160 мА !
По правилам хорошего тона, надо действительно вешать на каждый разряд свой "ключ"
но многие считают что это - это лишние "заморочки" и игнорируют
а зря! читаем в даташите на МК:
DC Current per I/O Pin ........... 20.0 mA
The sum of all IOL, for all ports, should not exceed 60 mA.
т.е., на любую ножку порта - не более 40 мА, но на все порты суммарно - не более 60!!
Вывод: 8*20 не равно 160 мА !
По правилам хорошего тона, надо действительно вешать на каждый разряд свой "ключ"
- SeregaT
- Генеральный секретарь МЯУ
- Сообщения: 18853
- Зарегистрирован: Пн сен 03, 2007 18:24:27
- Откуда: Россия. Омск.
- Контактная информация:
Пухич писал(а):Т.е. если педаль не отпущена еще, то мы, подождав зачем-то 1мс (это можно вообще убрать ИМХО),
Это антидребезг. Если не ждать 1 мс, то при сварке возникает очень мощный импульс, который МК принимает за сигналл к действию. Поэтому когда прошла 1 мс, а сигнал всё еще остался, то значит это на самом деле отпущена педаль.
зашли в цикл, там идет бесконечный цикл, в котором идет задержка 2 мс, а потом проверка отпускания, и если отпускание произошло, то переходим на автомат. А вот если к началу этого кода педаль отпущена уже, то что - не переходим на автомат? Или так и должно быть по логике?
Вот это было самое проблемное место. если я просто писал while (!PIND.4); то в момент замыкания электродов возникала помеха которая вызывала ложное отпускание педали, а так как педаль была еще нажата, то после помехи опять включался клапан и трансформатор. За одно нажатие педали иногда цикл повторялся 2 раза. Так как мне нужно было чтобы работало наверняка (иначе из-за этого сварщик весь день будет медленно работать), поэтому кроме антидребезга я на всякий случай сделал дополнительный бесконечный цикл. Если педаль отпущена до этого цикла, то конечно переходим на "автомат" (тоесть начало основного цикла автоматической сварки).
Я просто не совсем воткнул, что там ваш сварщик не успевает.
Сварщик успевал. Это моя программа не успевала (я там задержки большие сделал сперва). Мне казалось что получается быстро, а для сварщика это было слишком медленно. Потом я все задержки сократил и стало всё нормально работать.
- Пухич
- Модератор
- Сообщения: 4673
- Зарегистрирован: Вс июн 01, 2008 00:17:35
- Откуда: Я всего лишь плод вашего воображения...
Это антидребезг. Если не ждать 1 мс, то при сварке возникает очень мощный импульс, который МК принимает за сигналл к действию. Поэтому когда прошла 1 мс, а сигнал всё еще остался, то значит это на самом деле отпущена педаль.
Ну это не "антидребезг" называется..... Ну не суть. Это что же - такой импульсище, что перебивает живой ноль от педали? Ну может быть....
Вот это было самое проблемное место. если я просто писал while (!PIND.4); то в момент замыкания электродов возникала помеха которая вызывала ложное отпускание педали, а так как педаль была еще нажата, то после помехи опять включался клапан и трансформатор. За одно нажатие педали иногда цикл повторялся 2 раза. Так как мне нужно было чтобы работало наверняка (иначе из-за этого сварщик весь день будет медленно работать), поэтому кроме антидребезга я на всякий случай сделал дополнительный бесконечный цикл. Если педаль отпущена до этого цикла, то конечно переходим на "автомат" (тоесть начало основного цикла автоматической сварки).
Хм.... Надо подумать.... Не, ну это в принципе нормальный способ, хотя тут ИМХО надо что-то более суровое и челябинское.
А педаль как подключена к МК? Прямо так и висит на входах?
Ну если просто в лоб, то тут просто должна быть надежная последовательная проверка входа на наличие нуля/единицы. У вас видимо так и есть, просто немножко запутанно.
А вообще я вас искренне поздравляю с первым устройством на МК!
Знание - сила!
- SeregaT
- Генеральный секретарь МЯУ
- Сообщения: 18853
- Зарегистрирован: Пн сен 03, 2007 18:24:27
- Откуда: Россия. Омск.
- Контактная информация:
Пухич писал(а):А вообще я вас искренне поздравляю с первым устройством на МК!
Спасибо
Пухич писал(а):Вообще, если на будущее, то я бы не пожлобился на электромагнитное экранирование. Сейчас сталь не так дорога.
Да где-же я в металлоцехе сталь-то найду?
Пухич писал(а):Ну это не "антидребезг" называется.....
А что называется антидребезгом? И как он реализуется?
И вот еще. Для этого девайса я писал другой код, но он почему-то иногда пропускал нажатия кнопок. Причем не только в железе (не в реальных условиях, а дома на столе), но и даже в протеусе. Код я выложил ниже, может кто скажет причину?
Кстати, купил себе дисплей на PLED WP1602C-Y-CCS (вместо него в девайс воткнул обычный LCD, 2 строки по 8 символов, а PLED забрал себе). Но что-то никакого описания на него не нашёл даже на winstar.ru На дисплее так-же 16 контактов как и на обычных. Питание на те-же выводы, вместо контрастности регулируется яркость. Подключал его к своим девайсам, но что-то он показывает всякую лажу вместо того, что нужно. То вроде часть надписи правильно покажет (а другая часть иероглифами), то еще непонятно что показывает, а иногда при смене надписи вообще ничего не показывает. Может у него подключение настандартное или дисплей дохлый?
- Вложения
-
- svarka.c
- (10.79 КБ) 318 скачиваний


