пятница, 12 декабря 2014 г.

переделка звонка на свет на лестнице.

Звонок сделал обычный от кнопки. Тоже кнопка с бай электрика!!! Даже у нас в Ахтубинске. А сенсор на лампочку на лестнице. Подпаял резисторы 910+240 кБ. Чтобы загоралсь. А то видит свет ниже на 2м этаже и не загорается)))

Сгорел 21го.

воскресенье, 9 ноября 2014 г.

Карманная БИНС

На базе Ардуино Arduino pro mini 5 v 16 mhz, сделал БИНС.

24-25.10.14
Собал первую рабочую схему.
GY-52 - акселерометр + гироскоп,  YL-30 - регистратор на SD-карту.
Подключение GY-52: протокол I2C, INT - 2, VCC - 5 v, SCL - A6,SDA - A5,GND - GND.
Общение: подключаю файл I2Cdev.cpp .h или просто Wire.h. Идет работа с регистрами по id.

Подключение YL-30 - GND-GND,MISO-12,SCK-13,MOSI-11,CS-4,3.3v,GND,5v.
Подключаются три библиотеки SD.h и еще несколько. Протокол SPI

27.10
На днях проверил алгоритм дмп6. Уплыла далеко-далеко траектория... Разбираюсь с квартернионом.


09.11
Заработал алгоритм счисления пространственного положения: курс, тангаж, крен. Оказывается нужно использовать показания акселерометров для коррекции. Алгоритм называется MadgwickAHRS. Хороший - устойчивые показания



Питание - 3,6 в на адаптер - и запитываю АГ и регистратор. Регистратор требует питание 3,3 в и 5 в. Но похоже нормально работает и от 5 в только. АГ работает только от 5 в.

Регистрация 100 Гц. При 1000 Гц захлебывается - не успевает писать.


Итак, прога, которая пишет сырец на SD-карту:


#include "MPU6050.h"
#include "Wire.h"
#include "SD.h"
#include <math.h>

#define LED_PIN 13


MPU6050 accelgyro;
int16_t ax, ay, az;
int16_t gx, gy, gz;
float time,ax1, ay1, az1, gx1, gy1, gz1;
int16_t tmp;
File dataFile;
long t = 0;


bool blinkState = false;

void setup() {
        Wire.begin();
        Serial.begin(115200);
        accelgyro.initialize();
accelgyro.setRate(0);//1000 пїЅпїЅ
accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_2);//+-2g
accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_250);//250 gr/s
accelgyro.setXAccelOffset(265);
accelgyro.setYAccelOffset(-1835);
accelgyro.setZAccelOffset(976);
accelgyro.setXGyroOffset(132);
accelgyro.setYGyroOffset(241);
accelgyro.setZGyroOffset(1669);
pinMode(LED_PIN, OUTPUT);
if (!SD.begin(4)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
}

void loop() {
    // read raw accel/gyro measurements from device
       t=millis();
       time=t/1000.0;
       accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
       tmp=accelgyro.getTemperature();
       ax1=ax/32768.0*2.0;
       ay1=ay/32768.0*2.0;
       az1=az/32768.0*2.0;
       gx1=(gx-48)/32768.0*250;//-9
       gy1=(gy+86)/32768.0*250;//+6
       gz1=(gz-21)/32768.0*250;//-2
        // display tab-separated accel/gyro x/y/z values
        Serial.print(time,3); Serial.print("\t");
        Serial.print(ax1,6); Serial.print("\t");
        Serial.print(ay1,6); Serial.print("\t");
        Serial.print(az1,6); Serial.print("\t");
        Serial.print(gx1,6); Serial.print("\t");
        Serial.print(gy1,6); Serial.print("\t");
        Serial.print(gz1,6);Serial.print("\t");
        Serial.println(((tmp+ 12412.0) / 340.0),6);
dataFile = SD.open("datalog.txt", FILE_WRITE);
// if the file is available, write to it:
if (dataFile) {
        dataFile.print(time,3); dataFile.print("\t");
        dataFile.print(ax1,6); dataFile.print("\t");
        dataFile.print(ay1,6); dataFile.print("\t");
        dataFile.print(az1,6); dataFile.print("\t");
        dataFile.print(gx1,6); dataFile.print("\t");
        dataFile.print(gy1,6); dataFile.print("\t");
        dataFile.print(gz1,6);dataFile.print("\t");
        dataFile.println(((tmp+ 12412.0) / 340.0),6);
dataFile.close();
    // blink LED to indicate activity
    blinkState = !blinkState;
    digitalWrite(LED_PIN, blinkState);
} else {digitalWrite(LED_PIN, LOW);}
}


Подключаются еще 3 библиотеки: SD, MPU6050, I2Cdev. Архив с кодом: https://drive.google.com/file/d/0B1AR0G3hSwPZUlN4RXRibnN4SXc/view?usp=sharing

вторник, 28 октября 2014 г.

Система зажигания Оки на ардуино




РАБОЧАЯ СХЕМА

ПРОШИВКА (№ 18, 15.03.15)
   
int dh = 2;   //вход - датчик холла. спаду импульса (с 1 на 0) должен происходить момент зажигания
int dh2 = 5;   //вход - другой датчик холла.
int sz1 =  3;  //выходы на полевики свечей зажигания
int sz2 =  4;
int ind =  13;

bool dh_old =LOW;//старое и текущее состояние сигнала от ДХ
bool dh_new = LOW;
bool dh_front=LOW; 
bool dh_spad=LOW;//по спаду импульса с дх срабатывает
bool dh2_old =LOW;
bool dh2_new = LOW;
bool dh2_spad=LOW;
bool dh2_front=LOW;

bool first;//чередовать искры
unsigned long t0;//фиксированный момент времени. Использую для засекания промежутков времени
unsigned long t1;//время первого  фронта ДХ2
unsigned long dt;//временной интервал между текущим сигналом с ДХ и предыдущим.
unsigned long oborot;//количество оборотов в минуту
unsigned long oborot_old;
unsigned int i=8;//для завода
unsigned int j=1;//для завода

bool flag;//фронт ДХ2 был
bool flag2;//спад от ДХ2 был и между фронтом и спадом не больше 2 секунд, причем этот спад и фронт ПЕРВОГО ИМПУЛЬСА после включения зажигания
bool flag_front;//флаг фронта импульса
bool flag_nak;//идет накопление
unsigned long t_nak;//время с момента накопления
unsigned long t_front;//время c фронта импульса с ДХ

void setup() {
  Serial.begin(115200);
  pinMode(dh, INPUT);      //инициализация входов и выходов
  pinMode(dh2, INPUT);    
  pinMode(sz1, OUTPUT);   
  pinMode(sz2, OUTPUT);   
  pinMode(ind, OUTPUT);
  dh_old=digitalRead(dh);
  digitalWrite(sz1, LOW); //берегу полевики
  digitalWrite(sz2, LOW);
  digitalWrite(ind, LOW);
  first=HIGH;
  flag=LOW;
  flag2=LOW;
  t0=0;
  t1=0;
  flag_front=LOW;
  flag_nak=LOW;
  }

void loop(){
dh_new=digitalRead(dh);  
dh2_new=digitalRead(dh2);
dh_front=LOW;
dh_spad=LOW;
dh2_front=LOW;
dh2_spad=LOW;
//ДХ спад
if((dh_new==LOW)&&(dh_old==HIGH)) {
if (digitalRead(ind)) {digitalWrite(ind, LOW);} else {digitalWrite(ind, HIGH);}
dh_spad=HIGH;
dt=millis()-t0;
oborot=60000.0/dt;
if (oborot<150||oborot>6000) {dh_spad=LOW;}//некондиция по оборотам, пропускаю сигнал
if (oborot>3*oborot_old) {dh_spad=LOW;}
t0=millis();
oborot_old=oborot;
}

//ДХ фронт
if((dh_new==HIGH)&&(dh_old==LOW)) {
dh_front=HIGH;
if (oborot<150||oborot>6000) {dh_front=LOW;}//некондиция по оборотам, пропускаю сигнал
if (oborot>3*oborot_old) {dh_front=LOW;}
}

//ДХ2 спад
if((dh2_new==LOW)&&(dh2_old==HIGH)) {
dh2_spad=HIGH;
}

//ДХ2 фронт
if((dh2_new==HIGH)&&(dh2_old==LOW)) {
dh2_front=HIGH;
if (!flag) {t1=millis();}
flag=HIGH;
Serial.println("");
Serial.print("dh2 front");Serial.print("\t");Serial.print(flag);
}


dh_old=dh_new;
dh2_old=dh2_new;
////////////////////////////////////////////////////




if (dh2_spad) {//формирования flag2 - спад 1-го импульса, общая длительность импульса не более 2 с.
flag2=LOW;
if((millis()-t1<=1000)&&(t1>0)) {flag2=HIGH;}
Serial.println("");
Serial.print("dh2 spad");Serial.print("\t");Serial.print(flag2);
}


if (!flag){
//завод машины
//4 мс = 8 градусов. т.е. сдвишка УОЗ первых искр 32 градуса. Затем убывает до 4 градусов.
// схема завода: 8 8 7 7 6 6 5 5...2 2 2 2...

if(dh_front){//обработка фронта от ДХ
Serial.println("");
Serial.print(millis());Serial.print("\t");Serial.print("front, ojidanie");
}


if(dh_spad){//обработка спада от ДХ, МОМЕНТ ЗАЖИГАНИЯ
Serial.println("");
Serial.print(millis());Serial.print("\t");Serial.print(oborot);Serial.print("\t");Serial.print(dt);
digitalWrite(sz1, HIGH); //формирую импульсы на катушку зажигания
digitalWrite(sz2, HIGH);
if ((i>2)&&(j==3)) {i-=1;j=1;}
delay(i);
if (i>2) {j+=1;}
digitalWrite(sz1, LOW);//отключаю землю от катушки, в это время проскакивает ИСКРА!!!
digitalWrite(sz2, LOW);
Serial.print("\t");Serial.print("ot spada zaderjka i iskra");Serial.print("\t");Serial.print(i);
}//обработка спада от ДХ, МОМЕНТ ЗАЖИГАНИЯ
} else {///если железо попало в щель и первый фронт дх2 сформировался.
///////////////////////////////////////////////////////////////////////////////////
if(dh_front){//обработка фронта от ДХ
Serial.println("");Serial.print(millis());Serial.print("\t");Serial.print("front");
flag_front=HIGH;//флаг фронта, сохраняется до спада
t_front=millis();
}


//поочередное накопление энергии на катушках
if(!flag_nak&&flag_front){//формируется флаг на накопление//1
if (dt/3<12) {//2
flag_nak=HIGH;//пора накоплять
t_nak=millis();
Serial.println("");Serial.print(millis());Serial.print("\t");Serial.print("nakopl, dt/3 menshe 12");
if(first) {digitalWrite(sz1, HIGH);Serial.print("\t");Serial.print("1 svecha nakoplenie");} else {digitalWrite(sz2, HIGH);Serial.print("\t");Serial.print("2 svecha nakoplenie");}
} else {      //накопление с задержкой  //2
if (millis()-t_front>dt/3-10) {//3
flag_nak=HIGH;t_nak=millis();Serial.println("");Serial.print(millis());Serial.print("\t");Serial.print("hakopl s zaderjkoi");Serial.print("\t");Serial.print(dt/3-10);
if(first) {digitalWrite(sz1, HIGH);Serial.print("\t");Serial.print("1 svecha nakoplenie");} else {digitalWrite(sz2, HIGH);Serial.print("\t");Serial.print("2 svecha nakoplenie");}
}//3
}//2
}//1

if (flag_nak&&(millis()-t_nak>50)) {//защита ключей (если заглохла как-то неудачно)
Serial.println("");
Serial.print(millis());Serial.print("\t");Serial.print("ZACHITA KLUCHEI!!!");
digitalWrite(sz1, LOW);//отключаю землю от катушки, в это время проскакивает ИСКРА!!!
digitalWrite(sz2, LOW);
flag_nak=LOW;
Serial.print("\t");Serial.print("spad, iskra!!!");
}

if(dh_spad){//обработка спада от ДХ, МОМЕНТ ЗАЖИГАНИЯ
Serial.println("");
Serial.print(millis());Serial.print("\t");Serial.print(oborot);Serial.print("\t");Serial.print(dt);
digitalWrite(sz1, LOW);//отключаю землю от катушки, в это время проскакивает ИСКРА!!!
digitalWrite(sz2, LOW);
flag_nak=LOW;
flag_front=LOW;
Serial.print("\t");Serial.print("spad, iskra!!!");
if (!flag2) {first=!first;} else {flag2=LOW;}//реализация чередования искр, если flag2=HIGH, то пропустить ОДИН раз чередование искр
}//обработка спада от ДХ, МОМЕНТ ЗАЖИГАНИЯ
}///


}//loop

 
КОМПЛЕКТУЮЩИЕ

НАИМЕНОВАНИЕ
ГДЕ ДОСТАТЬ
СТОИМОСТЬ (ПО СОСТОЯНИЮ НА 2015 Г.)
1
ПРОГРАММНО-АППАРАТНАЯ ПЛАТФОРМА ARDUINO PRO MINI 16МГц 5В.

miniinthebox.com
350
2
2 КАТУШКИ ЗАЖИГАНИЯ ОТ ВАЗ2108 (27.3706)

Автомагазин

2*500=1000
3
2 ПОЛЕВЫХ ТРАНЗИСТОРА N-КАНАЛА. IRFB3077

Радиорынок
2*300=600
4
КОНВЕРТЕР DC/DC

miniinthebox.com
300
5
ДАТЧИК ХОЛЛА НА ОКУ

Автомагазин
120
6
КОРПУС
Хозяйственный магазин (купил там пластиковый корпус – распред-коробку)
50
7
ПРОВОД 4 КВ. ММ ДЛИННОЙ 2,5 М

Магазин электротоваров
20
8
4 РЕЗИСТОРА 250 мВт 1,8 КОм

В старом телевизоре
Бесплатно
9
2 РЕЗИСТОРА 250 мВт 1 КОм

В старом телевизоре
Бесплатно
10
ПЛАТА ИЗ ГЕТИНАКСА
В старом телевизоре
Бесплатно
11
КРЕПЕЖ
В гараже
Бесплатно
12
РАЗЪЕМНАЯ КОЛОДКА
В старом телевизоре
Бесплатно
Итого: 2440 руб и уйма времени



СБОРКА
1.      Прошей прогу в arduino.
2.      Настрой адаптер питания. Запитай его от аккума на заведенной машине (напряжение около 14 В) и выстави на выходе 5 В. Настройка осуществляется часовой отверточкой плоской.
3.      Собери на плате из гетинакса схему
4.      Закрепи на машине
5.      Проведи провода (от коммутатора к 2-й катушке зажигания проведи провод сечением 4 кв. мм. К 1-й катушке проведи штатный провод (коричневый), провод синий+черный запаяй на выводы Б обоих катушек (+12В ЗАЖИГАНИЕ))
6.      Запаяй провода. Разъем папа-мама на коммутатор лучше не делай – так запаяй. Лучше паянного соединения ничего нет. Массу делай ОДНУ – нак корпус машины в одной точке. Делал для надежности две массы: корпус машины и двигатель и нарвался на сильные наводки.
7.      Трамблер поставь на 2 деления в плюс.


ОПИСАНИЕ РАБОТЫ СИСТЕМЫ, ТЕОРЕТИЧЕСКИЙ БАЗИС

На первичную обмотку катушки зажигания подается кратковременно напряжение от аккумулятора. На вывод Б - +12В от реле зажигания, на вывод К – сток полевого транзистора (при его открытии земля подается, т.е. полевик является силовым ключом). При попадании шторки в щель ДХ он вырабатывает 1, при уходе шторки вырабатывается 0. Этот сигнал принимает 2 цифровой вывод Arduino. Arduino прожевывает этот сигнал и открывает полевики на время не более 10 мс, управление полевиками осуществляется с цифровых выходов 3 и 4. Больше 10 мс катушку запитывать нельзя!!! Иначе она насытится и через первичку пойдет большой постоянный ток (24А), транзистор пробъется и замкнет катушку, катушка взорвется, ПРОВРЕНО!!! За временем насыщения тщательно следит МК.
При появлении сигнала 0 с ДХ должна проскочить искра. Искра формируется в момент закрытия полевика, т.е. при размыкания земли с катушки зажигания. А сам ДХ играется с УОЗ с помощью центробежного регулятора и вакуумного корректора в трамблере – трамблер не трогать, настроен заводом (дойдут руки и до него).
В программе реализован режим защиты от угонщика, режим завода (бегущий УОЗ), режим защиты от перенасыщения катушки зажигания (чтобы не вывести из строя полевик и затем катушку), режим чередующейся искры!!!
Поршни в цилиндрах двигаются синхронно, только в одном поршне происходит взрыв (ВМТ), а в другом конец такта выпуска газов и начало такта впуска топливо-воздушной смеси! А в каком цилиндре сейчас взрыв – не угадаешь. Поэтому по команде водителя МК переходит в режим чередования искры. Если двигатель начинает глохнуть – водитель сообщает об этом МК и чередование изменяется – двигатель восстанавливает обороты. В автомате сделать не получилось, но и так хорошо, а Вам есть над чем подумать.
Сначала для включения режима чередования была кнопка. Но он регулярно давала сбои (как потом разобрался наводка с двигателя, и не только), и слишком резко надо ее было ее нажимать. Догадался использовать еще один ДХ. При попадании в щель шайбочки формируется отличная 1, при вынимании - 0. Этот сигнал подаю на 5 цифровой вход Arduino. Гораздо удобней, чем кнопка!!!



ПОРЯДОК ЭКСПЛУАТАЦИИ

1.      Вынь подсос на середину.
2.      При холодной машине несколько раз интенсивно нажми на педаль газа. Затем вынь шайбочку и заведи машину. Зима кончилась, на холодную заводить не пробывал. При горячей машине просто заведи.
3.      Вставь шабочку, если машина начала глохнуть, тут же ее вынь. Потом, после того как работа двигателя нормализовалась, обратно вставь.
4.      По мере прогревания двигателя плавно убери подсос.


СТОИТ ЛИ ЗАМОРАЧИВАТЬСЯ?

            В горку стала тянуть намного живее. Из грязи отлично выхожу. Субъективно лошадок прибавилось. Замерил расход. Было 4,5 л, стало 4 л на 100 км. Т.е.  упал расход на 10%. Двигатель работает очень хорошо, равномерно. Ни одного выстрела в глушитель. Доработкой доволен.

Фотоматериал:



Сборка

ПРОШИВАЮ



Новый коммутатор

Щель

Система зажигания в сборе

 ИСТОРИЯ РАЗРАБОТКИ


15.12
Собрал схему-прототип на полевиках на 170А 70В мощных: F2907Z.
К сожалению напортачил с прораммой и сжег катушку зажигания - она лопнула!!!
Подал меандр наверно длительностью импульса 1 мс...
Потом исправил прогу, но было поздно.

В силовой цепи полевиков использовать провод потолще - там токи приличные.

Самое главное - завелся!!!! Очень стабильно работает машина - вместо неисправной катушки зажигания применил оковскую. Оборотов 600 в минуту спокойно держит. Докупил катушку зажигания на ВАЗ 2108, позже продолжу. Уже сделаю на постоянку - проведу провода красиво и схемку в коробочку оформлю. Предусмотрю третий полевик для воды.

25.12

Все никак не зафурычит. Сначала распотрошил трамблер. ЦР и ВК убрал. Реализовывал УОЗ программно. Так ничего и недобился...

Купил новый трамблер. Сейчас пытаюсь вернуть, что было. Пока не получается - машина не тянет. Как даешь нагрузку - резко падают обороты.

Теперь рассматриваю вопрос с карбюратором. Хочу старый собрать и поставить.

ОКАЗЫВАЕТСЯ DELAY НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ!!!! ЭТО УЖЕ ПОТОМ ВЫЯСНИЛ. ВОЗНИКАЕТ НЕСИХРОНКА. ПОЧЕМУ НЕ ЗНАЮ.

16.02.15

Стартер не тянул. Втулка улетела, стартер сломался. Купил новый. Втулку сделал латунную. Щас отлично прокручивает и заводится.

17.02

Покатался. Плохо тянет машина. До 50 км/ч еле разгоняюсь. Похоже в момент спада импульса от ДХ должна пробивать искра уже, а у меня только начинается накопление магнитного поля.

01.03.15
Сделал на днях с кнопкой. Кнопкой можно выбирать чередование искр! Стартер опять сломался - взял домой и перепаял - провод отпаялся. С задержкой так ничего и не получилось - сделал на прямую. По фронту-открывает полевики и по спаду закрывает.

05.03.15
Сделал второй ДХ вместо кнопки. Отлично!!! И ничего не нажимается зря!!! С ДХ гораздо удобней включать режим чередования искры.



  БАЗОВЫЕ ПРОШИВКИ РАННИХ ВЕРСИЙ 
(БЕЗ РЕЖИМА ЧЕРЕДОВАНИЯ, С КНОПКОЙ)

На закуску старые базовые прошивки. Работают хорошо:



Версия № 9 (23.02.15)
Синхронно полевики работают. Нет кнопки.
По фронту ДХ накопление при оборотах больше 600.

//искра подается точно по спаду импульса с ДХ. До этого происходит накачка катушки в течение 10 мс или сколько есть времени. При более 4000 об в минуту времени меньше.

int dh = 2;   //вход - датчик холла. спаду импульса (с 1 на 0) должен происходить момент зажигания
int sz1 =  3;  //выходы на полевики свечей зажигания
int sz2 =  4; 
int ind =  13; 
unsigned int zad;
bool dh_old =LOW;//старое и текущее состояние сигнала от ДХ
bool dh_new = LOW;
bool dh_front=LOW;  
bool dh_spad=LOW;//по спаду импульса с дх срабатывает
unsigned long t0;//фиксированный момент времени. Использую для засекания промежутков времени
unsigned long dt;//временной интервал между текущим сигналом с ДХ и предыдущим.
unsigned long oborot;//количество оборотов в минуту
unsigned long oborot_old;
unsigned long i=0;//счетчик оборотов просто
unsigned long j=0;//счетчик оборотов просто

void setup() {
  Serial.begin(115200);
  pinMode(dh, INPUT);      //инициализация входов и выходов
  pinMode(sz1, OUTPUT);    
  pinMode(sz2, OUTPUT);    
  pinMode(ind, OUTPUT); 
  dh_old=digitalRead(dh); 
  digitalWrite(sz1, LOW); //берегу полевики
  digitalWrite(sz2, LOW);
  digitalWrite(ind, LOW);
}

void loop(){
dh_new=digitalRead(dh);   
dh_front=LOW;
dh_spad=LOW;
//ДХ спад
if((dh_new==LOW)&&(dh_old==HIGH)) {
if (digitalRead(ind)) {digitalWrite(ind, LOW);} else {digitalWrite(ind, HIGH);}
dh_spad=HIGH;
dt=millis()-t0;
oborot=60000.0/dt;
if (oborot<150||oborot>6000) {dh_spad=LOW;}//некондиция по оборотам, пропускаю сигнал
if (oborot>3*oborot_old) {dh_spad=LOW;}
t0=millis();
oborot_old=oborot;
}

//ДХ фронт
if((dh_new==HIGH)&&(dh_old==LOW)) {
dh_front=HIGH;
if (oborot<150||oborot>6000) {dh_front=LOW;}//некондиция по оборотам, пропускаю сигнал
if (oborot>3*oborot_old) {dh_front=LOW;}
}

dh_old=dh_new;
////////////////////////////////////////////////////

if(dh_front){//обработка фронта от ДХ
Serial.println("");
Serial.print(millis());Serial.print("\t");Serial.print("front");Serial.print("\t");Serial.print(i);
if(oborot>=600) {//
//zad=dt-dt/1.5-5.0;
//delay(zad);
//Serial.print("\t");Serial.print(millis());
digitalWrite(sz1, HIGH); //подключаю землю к катушке СРАЗУ
digitalWrite(sz2, HIGH);
//Serial.print("\t");Serial.print(zad);
}//



}


if(dh_spad){//обработка спада от ДХ, МОМЕНТ ЗАЖИГАНИЯ
i=0;
Serial.println("");
Serial.print(millis());Serial.print("\t");Serial.print(oborot);Serial.print("\t");Serial.print(dt);
if(oborot<600) {//немножко задерживаюсь перед накачкой катушки, чтобы ее не сжечь
digitalWrite(sz1, HIGH); //формирую импульсы на катушку зажигания
digitalWrite(sz2, HIGH);
delay(4);
digitalWrite(sz1, LOW);//отключаю землю от катушки, в это время проскакивает ИСКРА!!!
digitalWrite(sz2, LOW);
Serial.print("\t");Serial.print("ot spada 4ms i iskra");
} else {
digitalWrite(sz1, LOW);//отключаю землю от катушки, в это время проскакивает ИСКРА!!!
digitalWrite(sz2, LOW);
Serial.print("\t");Serial.print("spad, iskra!!!");
}


}



i+=1;


}//loop




Прошивка при использовании кнопки (старая версия № 13):
//при остановке двигателя с вкл. зажиганием если останавливался после фронта и до спада импульса - перегрев транзистора по току (он был открытый). щас устранил. если глохнет, то при оборотах менее 600 искра не вырабатывается.
//после нажатия на кнопку чередования искр звук двигателя меняется!!! не нужен светодиод!!! Добился уменьшением УОЗ где-то на 30 градусов, что соответсвует 3 мс на 1500 оборотах в минуту.
//сама кнопка нажималась!!! щас глянул - наверно где-то перемыкало. нормально стало (28.02.15).
int dh = 2;   //вход - датчик холла. спаду импульса (с 1 на 0) должен происходить момент зажигания
int bt = 5;   //вход - кнопка ненажимающаяся.
int sz1 =  3;  //выходы на полевики свечей зажигания
int sz2 =  4; 
int ind =  13; 
int j;//количество нажатий на кнопку
int i;//пирамидка задержек
bool dh_old =LOW;//старое и текущее состояние сигнала от ДХ
bool dh_new = LOW;
bool dh_front=LOW;  
bool dh_spad=LOW;//по спаду импульса с дх срабатывает
bool bt_old =LOW;
bool bt_new = LOW;
bool bt_ok;//нажата сейчас кнопка
bool first;//чередовать искры
unsigned long t0;//фиксированный момент времени. Использую для засекания промежутков времени
unsigned long t1;
unsigned long dt;//временной интервал между текущим сигналом с ДХ и предыдущим.
unsigned long oborot;//количество оборотов в минуту
unsigned long oborot_old;
//unsigned long i=0;//счетчик оборотов просто

void setup() {
  Serial.begin(115200);
  pinMode(dh, INPUT);      //инициализация входов и выходов
  pinMode(bt, INPUT);     
  pinMode(sz1, OUTPUT);    
  pinMode(sz2, OUTPUT);    
  pinMode(ind, OUTPUT); 
  dh_old=digitalRead(dh); 
  digitalWrite(sz1, LOW); //берегу полевики
  digitalWrite(sz2, LOW);
  digitalWrite(ind, LOW);
  first=HIGH;
  j=0;
  i=16;
}

void loop(){
dh_new=digitalRead(dh);   
bt_new=digitalRead(bt);
dh_front=LOW;
dh_spad=LOW;
bt_ok = LOW;
//ДХ спад
if((dh_new==LOW)&&(dh_old==HIGH)) {
if (digitalRead(ind)) {digitalWrite(ind, LOW);} else {digitalWrite(ind, HIGH);}
dh_spad=HIGH;
dt=millis()-t0;
oborot=60000.0/dt;
if (oborot<150||oborot>6000) {dh_spad=LOW;}//некондиция по оборотам, пропускаю сигнал
if (oborot>3*oborot_old) {dh_spad=LOW;}
t0=millis();
oborot_old=oborot;
}

//ДХ фронт
if((dh_new==HIGH)&&(dh_old==LOW)) {
dh_front=HIGH;
if (oborot<150||oborot>6000) {dh_front=LOW;}//некондиция по оборотам, пропускаю сигнал
if (oborot>3*oborot_old) {dh_front=LOW;}
}

if((bt_new==HIGH)&&(bt_old==LOW)) {
j+=1;//считаю количество нажатий на кнопку
bt_ok = HIGH;
//if ((millis()-t1<300)&&(millis()<500)) {bt_ok = LOW;j-=1;}
if (millis()<500) {bt_ok = LOW;j-=1;}
t1=millis();
}



dh_old=dh_new;
bt_old=bt_new;
////////////////////////////////////////////////////



if(j==0){//j=0

if(dh_front){//обработка фронта от ДХ
Serial.println("");
Serial.print(millis());Serial.print("\t");Serial.print("front");
}

if(dh_spad){//обработка спада от ДХ, МОМЕНТ ЗАЖИГАНИЯ
Serial.println("");
Serial.print(millis());Serial.print("\t");Serial.print(oborot);Serial.print("\t");Serial.print(dt);
digitalWrite(sz1, HIGH); //формирую импульсы на катушку зажигания
digitalWrite(sz2, HIGH);
delay(i);
if (i>2) {i-=1;}
digitalWrite(sz1, LOW);//отключаю землю от катушки, в это время проскакивает ИСКРА!!!
digitalWrite(sz2, LOW);
Serial.print("\t");Serial.print("ot spada 2ms i iskra");
}//обработка спада от ДХ, МОМЕНТ ЗАЖИГАНИЯ

}//j=0



///////////////////////////////////////////////////////////////////////////////////
if(j>0){//кнопка нажата хоть один раз
if((millis()<300000)&&bt_ok) {first=!first;Serial.println("");Serial.print("najatie");Serial.print("\t");Serial.print(j);}


if(dh_front){//обработка фронта от ДХ
Serial.println("");
Serial.print(millis());Serial.print("\t");Serial.print("front");
if (oborot>600) {if(first) {digitalWrite(sz1, HIGH);Serial.print("\t");Serial.print("1 svecha");} else {digitalWrite(sz2, HIGH);Serial.print("\t");Serial.print("2 svecha");}} //подключаю землю к катушке СРАЗУ
}

if(dh_spad){//обработка спада от ДХ, МОМЕНТ ЗАЖИГАНИЯ
Serial.println("");
Serial.print(millis());Serial.print("\t");Serial.print(oborot);Serial.print("\t");Serial.print(dt);
digitalWrite(sz1, LOW);//отключаю землю от катушки, в это время проскакивает ИСКРА!!!
digitalWrite(sz2, LOW);
Serial.print("\t");Serial.print("spad, iskra!!!");
first=!first;//реализация чередования искр
}//обработка спада от ДХ, МОМЕНТ ЗАЖИГАНИЯ
}//кнопка нажата хоть один раз


}//loop

Бортовой комп на велик

Старый посеял, купил новый в Китае.
Магнит должен проходить около датчика Холла на расстоянии не более 5 мм.





Очень доволен - показывает общее расстояние, локальное расстояние, среднюю и максимальную скорость, время в пути. Мгновенную скорость, ускорение или замедление (+-). Крутятся или нет колеса.

Подключение USB к компьютеру

Где нет штыря - замок. С противоположной стороны контакты: +5в, -d,+d,grnd

понедельник, 20 октября 2014 г.

Выключатель света и дверной звонок на базе датчика движения

Купил в Минске выключатели на базе датчика движения: А1-230-027 и А1-230-032.
Стоят на наши деньги около 400 рублей (один).
Решил сделать такой выключатель света в коридоре.
 Штатный выключатель оставляю - на случай, если понадобится постоянный свет в коридоре.
Порядок работ:
1. Проводка кабель каналов и крепление датчиков и звонка.
2. Проводка проводов и монтаж в соответствии со схемой подключения.
3. Проверка работоспособности выключатель и доводка системы до стабильного работоспособного состояния.

Важный момент:  провода  на выводы L L1 датчика движения потолще - т.к. через них течет ток на освещение и на звонок. N - потоньше (только питание датчика).

Проверил- выключатель штатный разрывает ноль. Поэтому схема подключения обратная. Фаза на N, Ноль на L,L1.

Черная штука - геркон (грелся сильно звонок - 3 минуты работать непрерывно!). Выключатель до сих пор не доделал - его решил заменить

На лестнице

На лестнице датчик пришлось переделать. Чтобы задержка была минимальная. С 3 минут удалось уменьшить до 30 сек. Подпаял в одном месте резистор на 80 Ом (между перемычкой и правым нижним контактом VT1) и заменил PR-датчик на датчик от 32-й модели. Отпаял перемычку, отвечающую за функционирование только в темноте (чтобы и при свете звонок работал).

Результаты испытаний: на лестнице 2 пролета держит под прицелом. верхний, ведущий к квартире и следующий, с 3-й ступеньки. Звонок срабатывает и на соседей. Думаю загородить как-нибудь красиво датчик. Чтобы звонок срабатывал только для движущихся объектов, подходящих к двери квартиры непосредственно. Задержка действительно 30 сек. Геркон зря поставил - уберу. Звонок все время звенит, как будто геркона и нет.

К освещению в коридоре вопросов нет - как часы работает. Жена ругается, что свет все время горит, потому что самое проходное место.

понедельник, 29 сентября 2014 г.

Ремонт ОКИ в 2014 году

Движок тек и 2 передача барахлила, подрамник треснул.

В августе-сентябре заменил подрамник на купленный у Бахчевода за 2000 руб. Снял и промыл движок, идетифицировал течь. Оказывается из под крышки клапанов текло масло чуть-чуть, и все!!!


28.09
Поставил коробку, а она оказалась неисправной... Скоро опять снимать..

31.09
Снял коробку, зря оказалось - просто шарик штока залип, ближнего к контакту ЗХ.
Поставил обратно.
Поставил стартер - не заводится...
Поставил другую втулку - не заводится...
Решил сделать паузу - купить другую втулку.


02.10.09
Завелась!!!
Дело было не во втулке, а в неисправном стартере. Два угольных контакта залипли. Исправил - все теперь пучком.
Долго не заводилась - оказывается карбюратор. Залепил форсунку второй камеры герметиком - он вывернулся. Забил мне все отверстия. Прочищал...

07.10.14
Поехал на работу на  Оке, 6-го числа застраховал ее. Ужас. Неуправляемая, руль трясется. На газ не слушается, на подсосе. Вечером ее сжег. Перегрел - трубка лопнула резиновая и вода вытекла - минут 15 ехал с запредельной температурой. Щас уже не заводится даже. ПЕРЕГРЕЛ...

суббота, 27 сентября 2014 г.

Первый проект на ардуино про мини

Наконец, как приехал 22 числа, пришла посылка с ардуино про мини.
На МКATmega328 5В питания 16МГц тактовая частота.
Масютошная - 3 грамма веса!!!
327 рублей стоит - дешево!


И пришел конечно переходник USB to SERIAL: ft232r usb uart
Установил на него драйвер, он определился как COM3.

Скачал отсюда ардуино среду разработки:

http://arduino.ua

Версия проги 1.0.6

Сразу не получалось прошить, надо было выбрать программатор Parallel Programmer, COM3,  мою плату Pro mini на Amega328 5В питания 16МГц.

 Выдавало сначало ошибку: avrdude: stk500_getsync(): not in sync: resp=0x00
Потом, когда среду настроил и научился нажимать сброс вовремя: когда RX на UART начнет промаргивать, прога прошивается нормально! RX и TX мигают несолько секунд.

Моя первая прога такая:

int ledPin = 13; // пробывал и 13 пин

void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
digitalWrite(ledPin, HIGH);
delay(5000);
digitalWrite(ledPin, LOW);
delay(1000);
}

Она заставляет светодиод, подключенный к 13 выводу (штатный) светится 5 секунд и не светится 1 секунду. Что и происходит!!!



еще

http://arduino-projects.ru/projects/umnaya-lampa/
здесь видео разные разработок на ардуино.

а здесь видеоуроки для ардуино
http://www.youtube.com/watch?v=elB_lGhNpPU#t=1001

среда, 17 сентября 2014 г.

ПРОЕКТ - Звонок и освещение в коридоре на базе полупр. выключателя с датчиком движения а1-230-027


Свет
ЧУП «Светоприбор» ОО  «БелТИЗ

http://www.bylectrica.by
+375 17 258-85-32, 258-69-21
Магазин находится по адресу г. Минск, ул. Якубовского, 52
По телефону +375 17 258-41-22 вы можете получить информацию о наличии товара и заказать отсутствующий.


Магазин работает с понедельника по пятницу без обеда с 10:00 до 16:00, в субботу с 9:00 до 15:00
Воскресенье — выходной.

За время  своего  существования  предприятие  выросло из небольшой артели в современное рентабельное индустриальное  производство, основными видами которого  являются:
- сборочно-монтажное;
- литье  деталей  из  пластмасс;
- гальваническое  покрытие ( цинк, никель, хром);
- штамповочное;
- инструментальное (прессформы, литформы, штампы, приспособления);
- энергомеханическое;
- надомного  труда.


За  счет  собственных  средств  и  средств  Центрального  правления  Белорусского  товарищества  инвалидов  по  зрению  в  1988 г   была  введена  в  эксплуатацию  первая  очередь производственных  площадей  в  новом  микрорайоне  города   « Запад – 4 »  по  ул.  Якубовского.  Одновременно  здесь  же  стала  развиваться  и  инфраструктура  предприятия : до  1990 года  было  построено  за  счет  собственных  средств  два  жилых  дома,  малосемейное  общежитие,  а  также  с  долевым  участием  учебно – производственного объединения – детский  сад  и  прачечная  самообслуживания,  продовольственный  магазин, которые  соответственно  были  переданы  на  баланс  местного  районного  совета.

Улучшать показатели деятельности: Светоприбор способствует улучшению результатов деятельности своих заказчиков, повышению  их продуктивности, существенно снижая энергопотребление и повышая электробезопасность
Быть новаторами: инновации и качество - основные характеристики нашей продукции.
Привлекать таланты: компания Светоприбор намерена привлекать и сохранять преданных и грамотных специалистов и предлагать своим сотрудникам условия труда высокого уровня.
Ответственно работать: устойчивое развитие, энергосбережение, электробезопасность, снижение вредного воздействия на окружающую среду и соблюдение принципов деловой этики –  это суть нашей деятельности и основа предложения рынку.

Нужен товар:

А1-230-032

Выключатель полупроводниковый на базе датчика движения на кронштейне




А1-230-027

Выключатель полупроводниковый на базе датчика движения открытой установки

 

С1-230-028

Выключатель полупроводниковый на базе датчика движения скрытой установки

 


воскресенье, 7 сентября 2014 г.

Починили омыватели заднюю дверь

http://vmiredorog.ru/tehpomosch/188-blok-rele-i-predohranitelej-opel-astra-h-polnaya-komplektaciya

8-й по схеме предохранитель 10 А, красный в моторном отсеке.
 Он оказывается отвечает за омыватели и багажник.

четверг, 28 августа 2014 г.

ПРОЕКТ - Авто на воде

Достойный вариант M-ECO.
http://www.m-club.ru/index.php?productID=116
В инструкции все подробно описано.

И корректор топливной смеси есть, что важно.


http://www.meanders.ru/meiers6.shtml
лучший сайт по электролизеру






 другой сайт
 http://hho-auto.ru/electrolyser/
Водород + EFIE + IAT + MAP и прочие датчики: 30-60% (при использовании Green Source ProTuner)


Универсальный цифровой контроллер EFIE от Green Source эффективно работает на всех видах автомобилей. Он управляет как узкополосными, так и широкополосными датчиками на 4-, 6- и 8-цилиндровых автомобилях. Его можно переустановить с одного транспортного средства на любое другое.
Технические характеристики EFIE:
  • Подходит для всех автомобилей с узкополосными и широкополосными лямбдами
  • Двойной узкополосный EFIE; НАСТОЯЩИЙ дискретный вывод (0,12 или 0,9 В). Дискретный вывод позволяет избежать ложных световых сообщений «Проверьте двигатель»
  • Задержка запуска: мягкий переход в режим “ON” через 45 секунд позволяет предварительно прогреть ваш автомобиль.
  • Двойной широкополосный EFIE; точный вывод (0-1500uA) обеспечивает полный контроль над расходом топлива.
Преимущества универсального цифрового контроллера EFIE:
  • Настоящее цифровое устройство
  • Простые настройки
  • Усилители электронного топливного инжектора EFIE поставляются с заранее заданными настройками, поэтому вы можете просто подключить их и сразу же начать эксплуатацию
  • Встроенный регулятор напряжения обеспечивает стабильную работу и совместимость с любым транспортным средством
  • Монтируемый водонепроницаемый корпус
  • Лучшие качество и стоимость на сегодняшний день
  • Простая установка и эксплуатация:
    1. Закрепите устройство на соответствующем месте
    2. Подключите питание и заземление
    3. Следуя инструкциям, подключите провода к кислородному датчику

EFIE
http://www.hhogas.at/en/hho-zubehor/23-pwm-electronic-control-pulse-width-modulator.html









Где можно купить электролит


http://moskva.tiu.ru/p22157547-gidroksid-kaliya-500g.html
гидроксид калия

 шерсть стальная
http://www.ebay.com/itm/7-05oz-Steel-Wool-Grade-0-Brand-Panther-Stainless-Steel-Wool-Rust-Resistant-/161279354961?pt=UK_Crafts_Other_Crafts_EH&hash=item258cffa851

как построить электролизер
http://www.youtube.com/watch?v=K4xfRST9uWI


 батарея из стальной шерсти
http://www.youtube.com/watch?v=fox91EdHjY0





это сухой элемент на машину
http://www.hhogas.at/en/10-kit-dc1500-fur-autos-standard.html



 разная продукция зарубежная
http://www.greenfuelh2o.com/HHO_On_Demand_Electronics_s/1.htm


 сборка сухой батареи
https://www.youtube.com/watch?v=6Q4H9C8N2LY&index=25&list=PLYUIUQVRxUv_0ygbTyvxQu_U9VVs_bXDJ

 на расходомер воздуха
http://www.hhogas.at/en/hho-zubehor/29-map-maf-enhancer.html


 различные наборы, в том числе датчики
http://www.hhokitsdirect.com/efie.php



opel astra на воде
https://www.youtube.com/watch?v=ahZNITBgtHI

15.09.14
У Андрея раздобыл нержавейки. Узкие полоски шириной 8 см где-то. Нарезал и загрузил в машину. Буду делать электролизер.

17.09.14
Сейчас еду в Минск за товаром. на xrobot.by заказал ардуино и комплектующие.
ул. Славинского 37, тел.  +375 29 842 5646


koh:
http://www.belchemserv.com/
ЗАО "БелХимсервис".
375172842492
Сказали, что с физ. лицами не работают.

+375445744082
http://homeart.by/index.php?route=information/contact
home art сообщество
Республика Белаурсь, г. Минск, 4-й Орловский переулок 10/1

ПРОЕКТ - Электробайк со своим контроллером

12.10.14
Первый облом. Сжег 6 полевиков 80NF70 CZ0P1. Через них даже при длительности открытия 10 мс течет слишком большой ток. Если сопротивление обмоток 0,1 ом, то ток около 360 А. Какой транзистор, да и какой провод такой ток выдержит? Радует, что он кратковременный.

Планирую заказать транзистор TSD200N0SV. Он расчитан на 200А!
Или хотя бы irfz40, irf151,150 - они расчитаны на ток 40А. Из них можно кассету набрать.
А сжег - те были на 98 А... Очень хорошие.

От коротыша кстати у аккумуляторной батареи есть защита. Транзы горели - сразу приводили к коротышку - питание аккум сам сразу откидывал!!!

Вход ардуино, на который подается выход от ДХ нужно притягивать резистором 1,8кОм к питанию Vcc. Иначе не работает.

Схема в процессе разработки. Смысл - организовать полную аналогию с ДВС. Взрыв - это разряд кондера на обмотки. Разряд - в строго устновленое время по ДХ.

Чего добился - светодиоды моргали, читаю данные с ДХ. Нормально работает.