Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Здравствуйте уважаемые.Прошерстил форумы и думаю это самая подходящая ветка.Нужна помощь ибо у меня голова не варит уже.Итак задача опроса данных с оптической линейки и вывод на дисплей тм1638.Уже сделано:линейка опрашивается по прерыванию и данные выводятся на табло но! вместо одного миллиметра ,десятой , сотой отображается количество импульсов на тот самый миллиметр...один импульс это 5 микрон а одна сотка это 2 импульса по 5 микрон...пишу на си для тинки 88.Алгоритм с делилками на целочисленное значение не подходит.Может у когото есть мысли поделитесь .при необходимости кусок кода предоставлю.
переменные int sot_y,dec_y,edc_y,deced_y,soted_y; переменные temp_y1- temp_y8 хранят результаты счета для вывода на табло
if (mic_y==2){temp_y8=0;mic_y=0;if(sot_y<10){sot_y++;temp_y7=sot_y;};}else {temp_y8=5;}; если один импульс то вывожу на экран 5 а когда приходит второй вывожу 0 и добавляю сотку if (sot_y==10){sot_y=0;if(dec_y<10){dec_y++;temp_y6=dec_y;};}; тут если собралось десять соток до добавляю десятку вывод цифр соответственно обновляется при каждой смене. if (dec_y==10){dec_y=0;if(edc_y<10){edc_y++;temp_y5=edc_y;};}; далее все повторяется для следующих разрядов
if (edc_y==10){edc_y=0;if(deced_y<10){deced_y++;temp_y5=deced_y;};}; if (deced_y==10){deced_y=0;if(soted_y<10){soted_y++;temp_y5=soted_y;};};
Последний раз редактировалось culibin 100 Вт авг 24, 2021 21:22:33, всего редактировалось 1 раз.
что именно не понятно? как работает мой код ? я прибавляю по нарастающей по 5 микрон дважды для сотки и так к каждому разряду по единице до целого милиметра
это самая НЕ подходящая ветка. или ты считаешь, что предложил хитрый и необычный алгоритм, чтобы другие люди могли применить его у себя? так ты сильно ошибаешься. в этой теме люди показывают свои "хитрости", которые могут быть полезны другим людям.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
я так и не понял, в чем проблема? вместо простого счетчика импульсов вы применяете поразрядный (аналог BCD) счет. ну, не знаю, чем это оправдано, но вполне приемлемо. и чо? я бы делал иначе: считал импульсы в обычном счетчике, а уже перед выводом на индикатор производил бы вычисления и преобразования в "читабельный" вид. в прерываниях счет типа counter++, в главном цикле расчет и вывод. никакой "необычности" или "оригинальности" в этом алгоритме нет и не нужно
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
if (VAL_Y==VAL_Ycl ) {mic_y++ ;} else {mic_y--;} вот я и делаю тут как написали типа counter++.читабельный вид портит что микроны должны прибавляться по 5 за импульс и отображаться также .в разряде отображается либо 5 либо 0 а сотки отображаются как и положено от 1 до 9.задача простенькая но чет я наверно старею...еще нудобство что нужно минимально загрузить ядро мк иначе прерывания начинают глотаться при увеличении скорости движения линейки энкодера.
...читабельный вид портит что микроны должны прибавляться по 5 за импульс и отображаться также .в разряде отображается либо 5 либо 0 а сотки отображаются как и положено от 1 до 9.задача простенькая но чет я наверно старею...еще нудобство что нужно минимально загрузить ядро мк иначе прерывания начинают глотаться при увеличении скорости движения линейки энкодера.
Думаю, выражение 1000*S=5*N решит проблему. S[мм]-отсчет энкодерной линейки. 1000 учитывается десятичной точкой на табло. Если счетчик с каждым импульсом изменяет свое состояние на 5, умножение не нужно. Для энкодера счетчик должен быть реверсивный. В прерывании определяется направление и меняется состояние счетчика.
в чем разница S[мм]-отсчет энкодерной линейки. от N это число импульсов энкодера?мне же и нужно из импульсов сделать миллиметры соответственно из N получить S. из формулы понятно что N (то что насчитало прерывание от линейки множим на 5 микрон за каждый импульс ) затем делим на 1000 и получаем реальное кол-во мм ( некое число DATA_Y) которое нужно отобразить на табло? отображаю таким алгоритмом temp_y1 =16;//INDEX_NEGATIVE_SIGN; temp_y2 = DATA_Y/1000000%10;//Вывод цифры - "7" temp_y3 = DATA_Y/100000%10; //Вывод цифры - "6" temp_y4 = DATA_Y/10000%10; //Вывод цифры - "5" temp_y5 = DATA_Y/1000%10;//Вывод цифры - "4" temp_y6 = DATA_Y/100%10; //Вывод цифры - "3" temp_y7 = DATA_Y/10%10; //Вывод цифры - "2" temp_y8 = DATA_Y/1%10;//Вывод цифры - "1"
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения