HandMade32.ru - сделай своими руками

Программная реализация емкостного реле на Arduino

Программная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на Arduino
Автор Instructables под ником ShaneCunningham предлагает реализовать емкостное реле на Arduino программно. Из дополнительных деталей потребуются только собственно емкостные датчики и резисторы. Никаких внешних аппаратных генераторов. В ПО самоделки задействованы эта и эта сторонние наработки.
Емкостные датчики – двухслойные, трёхвыводные. Мастер изготавливает их своими руками. Картонный квадрат со стороной в 300 мм оклеивает фольгой – это будет вывод, соединяемый с общим проводом. Сверху помещает картонный квадрат со стороной в 100 мм, также оклеенный фольгой. На нём слой фольги разделяет на две части по контуру, похожему на осциллограмму прямоугольных импульсов. Это будут ещё два вывода.

Программная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на Arduino
Каждый из изготовленных датчиков комплектует резистором на 1 МОм. Если датчик один, подключает его как показано ниже. Если же их несколько, придётся задействовать ещё выводы Arduino – по два на датчик – и учесть это в скетче.

Программная реализация емкостного реле на Arduino
Вот что получается у мастера:

Программная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на Arduino
Составляет скетч, отправляющий по последовательному интерфейсу данные, снятые с датчика:

///////////////////////////////////////

void loop() {
long total1 = cs_4_2.capacitiveSensor(30);

Serial.println(total1);

/////////////////////////////////////////

Code for Communicating with Processing over Serial

*/

int val1 = 0;

int val2 = 0;

int val3 = 0;

int inByte = 0;

CapacitiveSensor cs_4_2 = CapacitiveSensor(4,2); // 1M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired

CapacitiveSensor cs_4_6 = CapacitiveSensor(4,6); // 1M resistor between pins 4 & 6, pin 6 is sensor pin, add a wire and or foil

void setup() {

cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF); // turn off autocalibrate on channel 1 – just as an example

cs_4_6.set_CS_AutocaL_Millis(0xFFFFFFFF);

Serial.begin(9600);

pinMode(2, INPUT);

pinMode(6, INPUT);

// pinMode(8, INPUT);

establishContact(); // send a byte to establish contact until receiver responds

void loop() {

// if we get a valid byte, read inputs:

if (Serial.available() > 0){

// get incoming byte:

inByte = Serial.read();

//long start = millis();

long total1 = cs_4_2.capacitiveSensor(30);

long total2 = cs_4_6.capacitiveSensor(30);

//long total3 = cs_4_8.capacitiveSensor(30);

//delay(10);

val1 = map(total1, 700, 2300, 0, 255); // sensor values from calibration are mapped to here – begins to detect human proximity at 700 (4" away) , hand nearly touching sensor at 2300

val2 = map(total2, 30, 175, 0, 255);

//val3 = map(total3, 0, 13000, 0, 255);

Serial.write(val1);

Serial.write(val2);

//Serial.write(val3);

//Serial.print(val1);

//delay(50);

}

void establishContact() {

while (Serial.available() <= 0) {

Serial.print('A');

delay(300); }

Дальнейший анализ поступающей информации мастер организует на ПК в среде Processing.

Программная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на ArduinoПрограммная реализация емкостного реле на Arduino
Но это – лишь начало эксперимента. В дальнейшем можно задействовать для обработки сигналов с датчиков Arduino – то же самое, либо, если его ресурсов не хватит, ещё одно.

administrator

Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного. - Альберт Эйнштейн

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.