Мой дневник

05.04.2017

Самый простой термометр на arduino

Filed under: электроника — sae762 @ 10:25
Tags:

В ряде случаев необходимо хотя бы примерно измерять температуру, например нагрев радиатора транзисторов. Можно конечно использовать специальные модули и датчики. Но если под рукой их нет, то можно сделать датчик из любого диода или транзистора.
Теория гласит, что падение напряжения на p-n переходе составляет порядка 600mV при комнатной температуре и изменяется почти линейно с коэфициентом -2mV/C. То есть, если например при +25 600mV, то при +35 уже 580mV.

pic1

Как измерить такие величины?
У arduino есть аналоговый компаратор, который позволяет измерать входное напряжение от 0 до некоторого “эталонного” напряжения. В качестве эталона можно использовать как внешний источник, так и внутренний, номиналом 1.1 вольт. Последний вполне подходит. Задаем analogReference(INTERNAL) и получаем analogRead(A7) значение от 0 до 1023 что примерно соответствует милливольтам.
Обычно для измерения падения напряжения схема состоит из последовательно соединенных диода и резистора. Резистор подключается к 3.3V можно и к 5V, диод к GND, а с точки соединения снимается прямое напряжение на p-n переходе.
Схему можно собрать и не транзисторе, превратив его в диод, соединив коллектор и базу. Эмиттер транзистора npn подключем к земле, а коллектор с базой – к резистору.

pic2
Где-то на форуме прочитал, что можно еще упростить схему, используя внутренний подтягивающий резистор arduino. То есть подключаем эмиттер npn транзистора к земле, базу с коллектором, к примеру, к A7. Затем “подключаем внутренний резистор командой digitalWrite(A7, INPUT_PULLUP);”.

НЕ РАБОТАЕТ! Мало того что команда должна быть pinMode(A7, INPUT_PULLUP), но похоже резистор слишком велик, и падение напряжения получается нестабильным.

ВОТ ТАК НЕ РАБОТАЕТ:pic3
В качестве бонуса привожу код, получающий аналоговое значение без задержек. В регистры устанавливаем параметры для считывания, запускаем процесс, а результат опрашиваем когда нам удобно. Можно также сделать по прерыванию.

int t;

void setup() {
Serial.begin(115200);
//pinMode(A7,INPUT_PULLUP);
//first measure
ADMUX=0b11000111;//ref 1.1v, input A7
ADCSRA |= 0b01000000;//start bit
delay(300);
}

void loop() {
if ((ADCSRA & 0b01000000) == 0) { //if bit ADSC cleared
t=ADCL; //read it first, to lock adch
t|=(ADCH<<8);//read it last to unlock
}
Serial.println(t);
//start new conversion
ADCSRA |= 0b01000000;//start bit
delay(1000);
}

Обратите внимание на порядок считывания значения ADCL и ADCH

 

Advertisements

29.09.2015

Мосты h-bridge mosfet L6201 и похожие

мост miniIBT сделан на основе L6201 – интегрального контроллера с мосфетами внутри:

miniibt

datasheet: http://www.alldatasheet.com/datasheet-pdf/pdf/529767/STMICROELECTRONICS/L6201.html

диаграмма:

L6201

мосты wangxin IMS-2C и прочие, на дискретный мосфетах, имеют аналогичные входы управления, следовательно скорее всего выполнены по такой же схеме. Однако нужно проверять.

– V +               Power Input +
– GND              Power Input
– IN1               Forward PWM input, high active
– IN2               Reverse PWM input, active high
– EN                Driver Enable, high enable, low off
– CT                Current signal output,analog signal
– VT                Voltage signal output, analog signal

ims-2

Как видно из схемы, в принципе возможно управление каждым плечом по отдельности, если это нужно.

Другие мосты на дискретных мосфетах имеют входы только направления и pwm, видимо на входе есть дополнительный инвертор, разделяющий сигналы на правую и левую стороны.

Dual-Motor-Driver-Module-board-H-bridge-DC-MOSFET-IRF3205-3-36V-10A-Peak-30A

Контроллер для мотор-колеса ebike kt36 zws

Filed under: Uncategorized — sae762 @ 10:59
Tags: , ,

сохраняю даные по своему старому контроллеру для мотор-колеса, на всякий случай

kt36zws-yysh2.color

kt36zws-yysh2.wiring

02.06.2015

Bafang BBS-02 motor pinout

Для программирования мотора BBS-02 определил следующие выходы:

GND – понятно, земля

P1/P2 – питание, контроллер включается замыканием этих контактов. это не силовые провода.

RX/TX – понятно сигналы com-порта, 1200 бод. не стал заморачиваться, если нет сигнала нужно просто поменять местами RX и TX )

 bafang-pins

Для себя показалось удобно вывести тонкие провода (только RX, TX и GND) и соединить разъем с дисплеем. Теперь можно всегда подключить ком-порт, а кнопкой дисплея можно включать контроллер. При работе с контроллером через ком-порт дисплей выдает ошибку, а софт нормально работает.