Лимитер отчечественного производства.
Напряжение мерить правильно до датчика тока или после?
ИМХО, без разницы. Для шунта оно принципиально, а в аллеграх медная шина идет.
Чет отвлекся на другие проблемы.
На неделе программирование встало 😃, но решил вот какую проблему:
В целях обратной связи было использование соединение по СОМ порту на скорости 9600.
С него получал калибровочные данные и проверял корректность работы.
В один прекрасный момент программатор стал вешать комп в синий экран. Причем комп не глючный, стоит 7ка.
Провозился 2 дня, причем само зависание происходит через несколько секунд после подключения меги328.
Методом подбора обнаружил что проблема в дровах. Стоят сейчас Prolific 1.12.
Откатывался на 1.09 - не помогло - разные манипуляции делал - не помогло, и с бубном прыгал и т.д. и т.п…
В итоге после апдейта с 1.09 на 1.12 сделал следующее:
- Подключил программатор с мегой328 в USB
- Очень быстро зажал кнопку РЕСЕТ и держал
- Запустил Ардуину, быстро выбрал скетч Blink
- Компильнул, нажал ЗАГРУЗИТЬ
- В момент зажигания синего диода ОТПУСТИЛ РЕСЕТ
- Мега перешилась
- Залил обратно свой скетч и все стало хорошо.
Видать в последнюю загрузку комп глюканул, в результате прошивка криво записалась.
Сейчас уверено считаем 1000вт/ч, с индикацией работы.
Старт сделал по достижении тока 7А
Осталось решить вопрос с аппаратным шимом.
После прихода датчиков инженеринг версия будет тестироваться.
Решил заняться их изготовлением
Как с решимостью?
Не угасает?😃
А еще до изготовления “в железе дело” дойдет…
Как с решимостью? Не угасает? А еще до изготовления “в железе дело” дойдет…
Не понял вопроса.
Я пока никаких трудностей не встретил.
Осталось решить вопрос аппаратным шимом
Думается, там еще много вопросов по ходу вылезет: это только со стороны кажется, ну подумаешь-фигня какая? Чего там делать?
А как паяло в руки возьмешь:(
А Протеус почему не используешь? Позволяет оттестировать схему без “загона компа в синий экран” и прочих неприятностей.:)Вообще, если бы меня спросили, я бы купил датчик Аллегро, настроил платку с ним (гарантированно- ничего не спалишь) а уж потом- изобретал бы шунты и все прочее.
А Протеус почему не используешь? Позволяет оттестировать схему без “загона компа в синий экран” и прочих неприятностей.
После прочтения форума по программированию понял чтот это вариант уже пройден и в голове сидит.
Т.к. одно и тоже действие можно реализовать 10 способами, а они в корне зависят от железа и компилятора.
Протеус не одно из условий не выполняет, следовательно этот этап пройден. (архитектуры)
Вторая причина - нет времени на изучения Протеуса.
Протеус не одно из условий не выполняет,
Вот те раз!
Лет уж 10-15 (не помню, когда он появился) все свои поделки на Протеусе, (причем не только программы, но и схемотехнику) разрабатывал- а тут “не выполняет”?
Сломался он, что ли?😦
Народ неоднократно жаловался, что Протеус джиттер не отлавливает на прерываниях. В компе вроде все гут, а в реале - увы и ах. Кстати, я тоже Протеусом не пользуюсь, первоначальную отладку делаю в АВР-Студио, а дальше - как карта ляжет 😃
первоначальную отладку делаю в АВР-Студио
Я про тоже, что Протеус только для начала хорош очень. А тараканов он не ловит =(
А тараканов он не ловит =(
“Кому- и кобыла невеста” (С) дворник Тихон)
Но вообще то, Протеус и АВР студио- вещи очень разные, если не сказать- абсолютно?
И именно тарканов (т.е. схемотехнические ошибки, после которых идет дым) Протеус ловит отлично.У меня во всяком случае:)
жаловался, что Протеус джиттер не отлавливает
Ну, я тут уже писал, чтобы не нарываться на джиттер- надо просто аппаратный шим использовать? Хотя, наикрутейшие ассы и бают, что путем немыслимых ухищрений- они его бороли программно, встает вопрос: а зачем? Тем более, в измерительном приборе с заявленной точностью 1%?
Там как раз мельчайший джиттер- обломает всю малину:(
И потом -придется плату переразводить, ноги менять…
Нет,
шим на точность не влияет почти совсем. Шим влияет на канал газа, типа можно словить помеху на канале.
Но если так то это дурдом а не контроллер =)
типа можно словить помеху на канале. Но если так то это дурдом а не контроллер =)
Из моего типа опыта, когда я делал лет 10 назад самодельный автопилот- именно канал газа был наиболее чувствителен к помехам и джиттеру, вплоть до остановки и перезагрузки ESC.
Ну, если у вас получится сделать это без аппаратного ШИМ- я только порадуюсь.
Ну, я тут уже писал, чтобы не нарываться на джиттер- надо просто аппаратный шим использовать? Хотя, наикрутейшие ассы и бают, что путем немыслимых ухищрений- они его бороли программно, встает вопрос: а зачем?
Это были не Вы, это было не тут,
а в другом совершенно разделе…😃
А именно, в разделе про самодельную электронику. Джиттер не нужно бороть программно, достаточно просто не создавать предпосылок для его появления. Достигается это генерацией фиксированного такта следования импульса и разрешением самого импульса более высоким, чем мертвая зона сервы. А аппаратный ШИМ бывает одновременно нужен для других задач. Впрочем, рецепты приготовления кошек у каждого свои 😃
Не успеваю в теме отписываться. Стоко всего хотелось рассказать…
Для затравки скэтч из первых версий для разговора (мясо)
//spisok const_start
float energy = 0.0;
float voltage = 0.0;
float current = 0.0;
// float startCurr = 1.3;
// float powerMax = 1001.0;
long prevMill = 0;
long prevMillA = 0;
unsigned long currMill = 0;
int ledState = LOW;
int sensorI = 0;
int sensorU = 0;#include <Servo.h>
Servo trot_esc;
int imp_s = 1000;
int imp_s_bk = 1000;void setup() {
// инициализируем СОМ-порт на скорости 9600:
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(6, INPUT);
trot_esc.attach(5, 1000, 2000);
trot_esc.writeMicroseconds(imp_s);
}
void loop() {
//инициализируем лимитер, ждем превышение стартового тока выше 286 квантов
while (sensorI < 2){
imp_s_bk = imp_s;
imp_s = pulseIn(6, HIGH);
if(imp_s >= 2500) { imp_s = 1000; }
if(imp_s > 2000 && imp_s < 2500) { imp_s = 2000; }
if(imp_s < 1000 && imp_s > 500) { imp_s = 1000; }
if(imp_s <=500) { imp_s = imp_s_bk; }
trot_esc.writeMicroseconds(imp_s);
sensorI = analogRead(A7) / 100;
// Serial.println(sensorI);//мигаем светодиодом в режиме ожидания
currMill = millis();
if(currMill - prevMill > 1000) {
prevMill = currMill;
if(ledState == LOW) ledState = HIGH; else ledState = LOW;
digitalWrite(13, ledState);
}
}
//активируем цикл подсчета энергии до 1001Вт/мин)
while (energy < 1000.0){
imp_s_bk = imp_s;
imp_s = pulseIn(6, HIGH);
if(imp_s >= 2500) { imp_s = 1000; }
if(imp_s > 2000 && imp_s < 2500) { imp_s = 2000; }
if(imp_s < 1000 && imp_s > 500) { imp_s = 1000; }
if(imp_s <=500) { imp_s = imp_s_bk; }
trot_esc.writeMicroseconds(imp_s);
//считываем показатели каждые 50мсек
currMill = millis();
if(currMill - prevMillA > 49) {
prevMillA = currMill;
// чтение U, делитель 51/15 аналоговый вход А4:
sensorU = analogRead(A4);
// чтение I, делитель 0/15 аналоговый вход А7:
sensorI = analogRead(A7);
// конвертируем уровни квантования в вольты (кванты 0 - 1023) вольты (0 - 22V):
voltage = sensorU * (22.0 / 1023.0);
// конвертируем уровни квантования в амперы (кванты 0 - 1023) амперы (0 - 100А):
current = sensorI * (100.0 / 1023.0);
energy = energy + (voltage * current * 0.05 / 60);
//Serial.println(current);
//Serial.println(voltage);
Serial.println(energy);
}
//мигаем светодиодом в режиме подсчета
if(currMill - prevMill > 150) {
prevMill = currMill;
if(ledState == LOW) ledState = HIGH; else ledState = LOW;
digitalWrite(13, ledState);
}
}// print out the value you read:
// Serial.println(voltage);
// print out the value you read:
// Serial.println(current);
//Serial.println(voltage);
//Serial.println(current);
digitalWrite(13, HIGH);
trot_esc.writeMicroseconds(1000);
delay(10000);
}
амперы (0 - 100А)
Извините, не силен в программировании и не очень понимаю, что это значит, но по возможности измерение тока лучше не ограничивать 100 амперами, так как трехбаночная мотоустановка (некоторые на таких летают, я тоже их использую) потребляет более 120А на старте.
Это версия 4-5S, на 3S будет 150А.
Но это не программное ограничение, это ограничение шунта.
В общем есть над чем поразмыслить, т.к. все равно чем-то надо жертвовать.
У меня скорее всего без разницы каким концом втыкать в батарею, в отличие от Юнилога2. Хотя тоже не совсем понимаю почему там не реализовать так же.
Скорее вся хитрость в метрологии.
Вопрос по Юнилогу2:
Форматнул флэшку на ФАТ32, оказалось надо ФАТ16.
Форматнул на ФАТ, но ЮниТулз не хотел создавать системные папки на флэшке, пришлось копировать старые папки.
Это нормально?
Когда стал решать проблему с ШИМом, поначалу казалось просто =))
Потом когда пришел к практике, понял что знания у меня не НОЛь, а даже не знаю с какой стороны подойти!!! Это была сцена из басни “Мартышка и очки”.
Просто был в шоке. Но самое интересное что через 3 часа задача была решена!
Уже начал писать процедуру по измерению длины импульса. Она конечно с первого раза не заработала )))) Но зато дала понять что это уже написано за меня и со второй попытки просто стал искать нужную процедуру и вот что получилось =))))
Ни у кого нет вопросов?
Или видео не понравилось ? =)
Ни у кого нет вопросов?
На все вопросы- мы с V_Alex ответили в самом начале.Я в частности писал, что сформировать нормальный ШИМ импульс- непростая задача?
А ответы появятся, когда изделие заработает по полной программе, а не диодиками замигает:)
Когда стал решать проблему с ШИМом, поначалу казалось просто =)) Потом когда пришел к практике, понял что знания у меня не НОЛь, а даже не знаю с какой стороны подойти!!!
Так задача еще и не решена: где исполнительное устройство (серва а лучше- движок с регулятором) который повторяет входной импульс в состоянии “работа” и молчит, как рыба об лед- когда ручка газа в “0”?
Причем, даже написав процедуру формирования ШИМ можно нарваться на то, что при дальнейшем развитии программы- она начнет глючить от какого нибудь нового прерывания и все придется переписывать по- новой 😦
Так что, до победных маршей- еще ой, как далеко.
Ни у кого нет вопросов?
Рано еще вопросы задавать 😃