Тема: Дистанция для лодки ПВХ
Возможно вы удивитесь подобному.
Всем доброго.
Идея такова,
Сам придумал отлиный привод для лодки ПВХ , возможно есть некие неточности, с поднятием мотора при стоянке, думаю и это можно подправить, при подходе к берегу привод одцеплать от мотора.
Это второй вопрос, главное пока управление.
Задача в несколько пунктов.
1) Подобные устройства стоят достаточно дорого, больше подходят лодкам больших размеров, однако на малых осуществимы. Достаточно к тросу управления прикрутить Ардуино, скажем через реде включения подачи напуги на мотор(движение в одну и обратную сторону) и управлять поворотом мотора. Питание или раздельно или общее, от батареи, скажем 12 в.
2) Так же при помощи серво-приводов управлять режимом работы самого мотора, увеличения и уменьшения подачи топлива.
3) Режим включения передачь( в моем случае их два) нейтоаль и ход в перед.
4) Дистанция: для начала вполне и проводная, для теста. Дальше прикурутить к Ардуине wifi модуль и при помощи связи через браузер(написать старничку для управления:(она небольшая и вполне возможная) и предевать по определенному АйПи адресу.
Что насегодня,
пока разробатываю нечто похожее на тахометр, для управления опережением зажигания(считываение оборотов с мотрора) и смещение опрежения зажигания.
С тахометром вопросов больше чем ответов. Например:
]#include <DueTimer.h>
const int RPM_PIN=3;
volatile int rpm = 0; // Тахометр
volatile int rpm_tik = 0; // Импуслы тахометра
void rpm_count(){
rpm_tik++;
}
void SensorData(){
rpm = rpm_tik;
rpm_tik = 0;
}
void setup(){
Serial.begin(9600);
pinMode(RPM_PIN,INPUT);
attachInterrupt(RPM_PIN, rpm_count, RISING);
Timer3.attachInterrupt(SensorData);
Timer3.start(1000000);
}
void loop(){
Serial.println(rpm/2*60);
delay(500);
}
на малых оборотах двигателя все соответствует истине.
Но при увеличении оборотов показания начинают завышаться.
Так при оборотах 5000-5500 (примерное значение, ибо прибор аналоговый) -
получаю значение 6600 и выше. В чем может быть проблема?
Заменил вызов прерывания на:
attachInterrupt(digitalPinToInterrupt(RPM_PIN), rpm_count, RISING);
вместо
attachInterrupt(RPM_PIN, rpm_count, RISING);
Все заработало правильно.Этот код взят для примера подобных, может быть и рабочим. Пока сам не во всем разобрался. Думаю время поможет, и вы тоже подскажите..если захотите.
Все свои пробы выкладяваю на https://github.com/OKRUgit/MOI_chemi там есть несколько примеров, И вполне можно их дополнять или исправлять он-лайн,
Если непонятно здесь так-же ничто меня не ограничит. Только правила форума, как на это посмотрит администрация форума, удобный вариан за админом..
Любой приму..