Самоделки и всё что с ними связано • Просмотр темы - Тахометр на ардуино

Тахометр на ардуино

Тахометр на ардуино

Сообщение Admin » 19 май 2016, 13:17

Делаю вообще диностенд, но пока получился тахометр :)
Выкладываю код, библеотеки и подключение экрана, ибо как оказалось подключить его было самое сложное.
Сигналы поданы через резисторы 1 кОм на экран, питание 3,3в, датчик холла A3144z



https://drive.google.com/open?id=0B7DKQ ... VRpNDgyZFE

phpBB [youtube]
Как создать тему и вставить изображение в сообщение viewtopic.php?p=228#p228
Правила форума viewtopic.php?p=10373#p10373
Мой канал на Youtube https://www.youtube.com/user/motorist828
Наш Telegram чат https://t.me/sam0delki_ru
Аватара пользователя
Admin
Администратор
 
Сообщения: 3502
Зарегистрирован: 20 июл 2011, 13:33
Откуда: Смоленская обл.
Возраст: 26
Баллы репутации: 136

Re: Тахометр на ардуино

Сообщение dead » 29 май 2016, 20:18

Admin, можешь чиркануть к каким пинам дуины какие пины дисплея ты подключал?
Аватара пользователя
dead
Мастер
Мастер
 
Сообщения: 477
Зарегистрирован: 06 мар 2012, 22:27
Откуда: Россия, респ. Карелия, г. Кондопога
Возраст: 25
Баллы репутации: 61

Re: Тахометр на ардуино

Сообщение Admin » 29 май 2016, 20:24

dead В теме про стенд есть схема, там подписано какой вывод куда, лишь один вывод по другому называется, но там разберёшься куда его воткнуть.

Есть ещё более новая прошивка, более точная от диностенда, лишнее удалил, вроде должна работать.
ДХ втыкается во второй пин PWM.

 
Код: Выделить всё
#include <LCD5110_Basic.h>


unsigned int percent, rpm;
unsigned long oldtime = 0;
unsigned long time;

LCD5110 myGLCD(8, 9, 10, 11, 12);

extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];

void setup()
{
myGLCD.InitLCD(63);
attachInterrupt(0, isr, RISING); //attaching the interrupt
}

void loop()
{
 
detachInterrupt(0); //detaches the interrupt
rpm =(1000000.0/time)*60; //calculates rpm

 
attachInterrupt(0, isr, RISING);
myGLCD.clrScr();
myGLCD.setFont(MediumNumbers);
myGLCD.printNumF(rpm, 0, LEFT, 0);
delay(1000);
}

void isr() //interrupt service routine
{
time = micros() - oldtime; //finds the time
oldtime = micros();
}
Как создать тему и вставить изображение в сообщение viewtopic.php?p=228#p228
Правила форума viewtopic.php?p=10373#p10373
Мой канал на Youtube https://www.youtube.com/user/motorist828
Наш Telegram чат https://t.me/sam0delki_ru
Аватара пользователя
Admin
Администратор
 
Сообщения: 3502
Зарегистрирован: 20 июл 2011, 13:33
Откуда: Смоленская обл.
Возраст: 26
Баллы репутации: 136

Re: Тахометр на ардуино

Сообщение dead » 29 май 2016, 21:18

Чтот невкурю по твоей схеме дак распиновка другая выходит, я хотел вообще просто для теста его подрубить по этой статье но чтот невышло - на дисплее ничего http://easymcu.ru/publ/12-1-0-101 либо спалил либо чтото не то, а если сравнить с твоим подключением то VCC вообще не на тот пин дисплея идет...
Аватара пользователя
dead
Мастер
Мастер
 
Сообщения: 477
Зарегистрирован: 06 мар 2012, 22:27
Откуда: Россия, респ. Карелия, г. Кондопога
Возраст: 25
Баллы репутации: 61

Re: Тахометр на ардуино

Сообщение Admin » 29 май 2016, 21:29

Всё таки правильно, просто у меня распиновка дана со стороны передней части экрана, а там с задней, ну и библиотека там другая, а так всё совпадает.
После подключения экрана делай перезапуск ардуины, спалить вряд ли там что то можно.
Как создать тему и вставить изображение в сообщение viewtopic.php?p=228#p228
Правила форума viewtopic.php?p=10373#p10373
Мой канал на Youtube https://www.youtube.com/user/motorist828
Наш Telegram чат https://t.me/sam0delki_ru
Аватара пользователя
Admin
Администратор
 
Сообщения: 3502
Зарегистрирован: 20 июл 2011, 13:33
Откуда: Смоленская обл.
Возраст: 26
Баллы репутации: 136

Re: Тахометр на ардуино

Сообщение dead » 30 май 2016, 13:38

Admin таки расхождения есть, вот например, у тебя земля идет крайним выводом (первым если смотреть со стороны передней части) а в той статье что я давал она идет третьим выводом (опять же если смотреть в "лицо" дисплею) далее у тебя идет питание 5в (5 же много кстати, он пишут на 3.3в?) а по мануалу питание идет крайним правым (опять же смотрим на переднюю часть).
Аватара пользователя
dead
Мастер
Мастер
 
Сообщения: 477
Зарегистрирован: 06 мар 2012, 22:27
Откуда: Россия, респ. Карелия, г. Кондопога
Возраст: 25
Баллы репутации: 61

Re: Тахометр на ардуино

Сообщение Admin » 30 май 2016, 13:45

dead я не понял где ты там увидел расхождение если честно, если про рисунок, так там ардуиновский экран, у него иное расположение ног, причём есть как минимум две версии этого экрана и ноги расположены по разному, по этому я и расписал куда какая нога.
А по картинке которая тут, для экрана от телефона, всё совпадает.
Да по нормальному надо подавать 3,3в, но оно у меня и вообще без питания работало даже, и в данный момент хоть и подано с пина на 3,3в, но там реально 5в, ибо стабилизатор паленый, да и у полностью рабочего стаба, там на самом деле более 3,3в.
Как создать тему и вставить изображение в сообщение viewtopic.php?p=228#p228
Правила форума viewtopic.php?p=10373#p10373
Мой канал на Youtube https://www.youtube.com/user/motorist828
Наш Telegram чат https://t.me/sam0delki_ru
Аватара пользователя
Admin
Администратор
 
Сообщения: 3502
Зарегистрирован: 20 июл 2011, 13:33
Откуда: Смоленская обл.
Возраст: 26
Баллы репутации: 136

Re: Тахометр на ардуино

Сообщение Sergei3090 » 04 фев 2018, 17:55

Дошло и до моей деревни :D Учусь по маленьку, хочется всё и сразу да понимание приходит крайне постепенно...
Не догадался заглянуть в тему зараннее, переделывал чужой код под свои нужды как мог.
Принцип работы тот же, единственная разница в экране, OLED 128х32.
Библиотеки для экрана можно скачать на сайте Adafruit. По поводу таймера, видимо и в моём случае не нужна TimerOne?
Измерял на сверлилке с тремя передачами:

 ещё фото


-----
и два магнита на третьей:


---
два магнита на вентиляторе обогревателя:

 код
Код: Выделить всё
#include <TimerOne.h>

#include <Adafruit_SSD1306.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <Adafruit_GFX.h>
#include <Fonts/FreeSans9pt7b.h> // подключим шрифт для заставки =)

#include <SPI.h>
#include <Wire.h>




//-----------дисплей-----------
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2



#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

//--------дисплей-------

unsigned long lastturn; //переменные хранения времени
int RPM; //переменная хранения частоты rpm


void setup() {
 
  Serial.begin(9600);  //открыть порт
  attachInterrupt(0,imp,RISING); //подключить прерывание на 2 пин при повышении сигнала
 
    // Дислей
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x32)
  display.clearDisplay();
  display.display();
   //
   // Заставка =)
 
  display.setFont(&FreeSans9pt7b); // вызываем шрифт
  display.setTextSize(1); 
  display.setTextColor(WHITE);
  display.setCursor(10,21);
  display.println("RPM METER");
  display.display();
  delay(300);
 
 
  display.drawRect(4,4,120,24,WHITE);
  display.display();
  delay(200);
  display.drawRect(2,2,124,28,WHITE);
  display.display();
  delay(200);
  display.drawRect(0,0,128,32,WHITE);
  display.display();
  delay(4000);
  display.clearDisplay();
  //
}
  // Счётчик
void imp() {
  if (micros()-lastturn > 5000) {  //ограничение максимального значения 12к об/мин
    RPM=(1000000/(float)(micros()-lastturn))*60;  //расчет частоты оборотов через период
    lastturn=micros();  //запомнить время последнего оборота
  //   
  }
}

void loop() {
 
  display.setFont();     // сбросим шрифт                         
  display.setTextSize(4);   
  display.setCursor(2,0);
  display.println(RPM);  // вывод скорости
  delay(350);                // время индикации мс
  display.display();
  display.clearDisplay();
 
  if ((micros()-lastturn)>4000000) RPM=0; //если сигнала нет более 3 сек, то считаем что RPM = 0

}

Питание 9В на Vin, порт экрана на А5 и А4, SCL и SDA соответсвенно, выход датчика на 2, их питание на выход +5V. ДХ тот же что и у Админа, за исключением того, что я его нагрузил на светодиод и резистор, чтобы видеть срабатывание.
Аватара пользователя
Sergei3090
Профессор самоделок
Профессор самоделок
 
Сообщения: 1039
Зарегистрирован: 20 мар 2012, 18:48
Откуда: Самарская область, Дальние Колдыря
Возраст: 21
Баллы репутации: 128


Вернуться в Измерительные приборы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron


Яндекс.Метрика