Сейчас не буду пробовать код, нет желания лопатить камень, да и он с придурью, а новые на почте забирать надо. Но посмотрел и не увидел что там измеряет. Фактически это бесконечное сложение за период цикла, которое начинается при новом. При загрузке другими задачами, длительность цикла как мне кажется изменится и число будет другим. Ну или хз. В том коде что я оставил, тоже есть такая зависимость. Но исходя из неё, и их того что не могу замерить 0, то остаётся вариант или разбиратся с тахометром на тиньке, или заказывать не очень дешёвую микру ПЧН. Написал продавцу LM231 SMD, может быть он продаст немножно, или придётся брать чтото в DIP.
Изначально думал делать аналог, но пока не наблюдаю схем. В случае с цифрой, наверно будет проще сделать отдельный МК для замера, а потом както выводить это в аналог, и вот с этим сложнее.
Вот тут и встрял, не знаю что лучше, в даташите схем нет, попалась только китайская.
Это все про subj ? Нахрена это все ? Куда то урулили вообще... Если вариант с геркономи и магнитом тупняком не нравится - кто мешает поставить несколько магнитов ? Заводские современные с герконом, народ юзает и вроде сильно не ругает.
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * */
#include <EEPROM.h> //библиотека для работы со внутренней памятью ардуино #define reed A0//pin connected to read switch #include <LiquidCrystal.h>//установил обычный дисплей LiquidCrystal lcd(12, 11, 5, 4, 3, 6); //storage variables
int reedVal; int odo;//количество оборотов колеса long timer = 0;// time between one full rotation (in ms) float mph = 0.00; float circumference; boolean backlight; char vivod;
int maxReedCounter = 100;//min time (in ms) of one rotation (for debouncing) int reedCounter;
void setup(){ odo=0; odo=(float)EEPROM.read(0)/10.0; // пройденное расстояние при запуске системы
// TIMER SETUP- the timer interrupt allows preceise timed measurements of the reed switch //for mor info about configuration of arduino timers see <a href="<a href="<a href="http://arduino.cc/playground/Code/Timer1" rel="nofollow">http://arduino.cc/playground/Code/Timer1</a>" rel="nofollow"><a href="http://arduino.cc/playground/Code/Timer1" rel="nofollow">http://arduino.cc/playground/Code/Timer1</a></a>" title="<a href="<a href="http://arduino.cc/playground/Code/Timer1" rel="nofollow">http://arduino.cc/playground/Code/Timer1</a>" rel="nofollow"><a href="http://arduino.cc/playground/Code/Timer1" rel="nofollow">http://arduino.cc/playground/Code/Timer1</a></a>" rel="nofollow"><a href="<a href="http://arduino.cc/playground/Code/Timer1" rel="nofollow">http://arduino.cc/playground/Code/Timer1</a>" rel="nofollow"><a href="http://arduino.cc/playground/Code/Timer1" rel="nofollow">http://arduino.cc/playground/Code/Timer1</a></a></a> cli();//stop interrupts
//set timer1 interrupt at 1kHz TCCR1A = 0;// set entire TCCR1A register to 0 TCCR1B = 0;// same for TCCR1B TCNT1 = 0; // set timer count for 1khz increments OCR1A = 1999;// = (1/1000) / ((1/(16*10^6))*8) - 1 // turn on CTC mode TCCR1B |= (1 << WGM12); // Set CS11 bit for 8 prescaler TCCR1B |= (1 << CS11); // enable timer compare interrupt TIMSK1 |= (1 << OCIE1A);
sei();//allow interrupts //END TIMER SETUP
}
ISR(TIMER1_COMPA_vect) {//Interrupt at freq of 1kHz to measure reed switch reedVal = digitalRead(reed);//get val of A0
if (reedVal){//if reed switch is closed if (reedCounter == 0){//min time between pulses has passed mph = (3.6*float(circumference))/float(timer); //расчет скорости, км/ч odo++; timer = 0;//reset timer reedCounter = maxReedCounter;//reset reedCounter } else{ if (reedCounter > 0){//don't let reedCounter go negative reedCounter -= 1;//decrement reedCounter } } } else{//if reed switch is open if (reedCounter > 0){//don't let reedCounter go negative reedCounter -= 1;//decrement reedCounter } } if (timer > 2000){ mph = 0;//if no new pulses from reed switch- tire is still, set mph to 0 EEPROM.write(0,(float)odo*10.0); //записываем odo во EEPROM память. } else{ timer += 1;//increment timer } }
void displayMPH(){ lcd.clear();//clear lcd.print("Speed "); lcd.setCursor(6, 0); lcd.print(mph); lcd.setCursor(0, 1); lcd.print(String(byte(odo*circumference/1000000))+"km "+int(odo*(int(circumference)%1000000))/1000+"m"); //здесь одометр, отдельно км и м, вычислить именно метры элегантней способа не нашел lcd.setCursor(11, 1); lcd.print(odo);//вывод оборотов колеса для отладки }
void loop(){ //print mph once a second displayMPH(); delay(1000); }
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Побазарил с продавцом, он просит почти 10 баксов, ладно куплю диповые за 5.
Повторял я этого дядьку, оно не работает, там надо delay большой ставить чтоб работало, и все эти ардуиновские коды на этом завязаны. Вот тот последний самый продвинутый и писал, не помню где ссылки, может на хабре, а может и не постил их. Оно работает хоть и зависимо от загружености, но 0 оно не видит, оно просто останавливается.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения