QRT-8A a multiplexer - setup
naspäť do zoznamu | viac podrobností o čiarovom senzore a multiplexore
8-kanálový analógový senzor obsahuje 8 IR LED a snímačov rozmiestnených vedľa seba merajúcich intenzitu odrazeného svetla. Keďže riadiaca jednotka RP2350 má iba 4 analógové vstupy (a niektoré sa nám môžu hodiť na niečo iné - napr. pripojenie joysticku, či mikrofónu), použijeme 8-kanálový multiplexer - čo je súčiastka, ktorá dokáže jeden signál na jednej strane podľa požiadavky prepojiť s jedným z 8 signálov na druhej strane, konkrétne použijeme CD4051 (74HC4051), ktorý mimochodom prenáša aj digitálne aj analógové signály, dokonca analógové signály môžu kolísať medzi napätím VEE až VCC - pričom VEE môže byť aj záporné napätie - takže napr. zvukový alebo iný signál sa môže pohybovať od -5 do +5 V, to ale nie je náš prípad a preto potrebujeme nastaviť VEE na 0 V, čiže prepojiť ho s pinom GND. Ale práve na to sú na tejto fialovej súčiastke pripravené dve plôšky, ktoré stačí pomocou spájkovačky prepojiť kvapkou cínu. Jednotlivých 8 kanálov na vonkajšej strane multiplexera priamo lícuje 8 analógových výstupov senzora - takže ich môžeme prepojiť pomocou hrebeňovej kolíkovej lišty, ostatné dva kontakty VCC a GND musíme prepojiť káblikovými prepojkami. Obe súčiastky dokážu pracovať v 3.3 V aj 5 V logike, ale na RP2350 používame iba 3.3 V logiku. Senzor však bežne počíta s 5 V logikou a pre nastavenie 3.3 V logiky je treba prepojiť podobné dve vyvedené plôškové kontakty ďalšou kvapkou cínu. Aby sme zabezpečili spoľahlivú dlhodobú prevádzku, tieto dve súčiastky bude lepšie napevno spojiť a zospájkovať, lebo pri opakovanom prepájaní káblikmi by sa mohla zhoršovať spoľahlivosť. Celý postup poskladania senzora s multiplexerom - najskôr si ho dôkladne preštudujte a rozmyslite:
1. príprava súčiastok
2. kvapkou cínu spojíme predpripravené pocínované pliešky na oboch súčiastkach.
3. rozdelíme 11-pinovú lištu na 5 a 6 pinové časti
4. pripájkujeme lištu do multiplexera (VEE a E necháme voľné)
5. do senzora do pinu IR napájkujeme káblik, z ktorého sme odcvakli z jednej strany koncovku a kúsoček káblika, na opačnej strane ostáva koncovka - bude sa pripájať na ľubovoľný červený pin s 3.3 V
6. pripravíme si prepojky medzi multiplexerom a senzorom: kratšia bude prepájať GND-GND a dlhšia VCC-VCC, dbajme, aby okraje senzora ostali voľné, aby sa dal upevniť do plastového držiaka
7. prepojky najskôr zapájkujeme do multiplexera
8. 8-pinovú lištu pripájkujeme do multiplexera na piny Y0 - Y7
9. visiacu prepojku z GND zapajkujeme aj do senzora
10. zospájkujeme obe súčiastky pripájkovaním lišty na strane senzora
11. vyčnievajúce kolíky z lišty odcvakneme
12. všetky kontakty zalejeme lepidlom z tavnej pištole (je to dôležité)
13. všetky kontakty zalejeme lepidlom z tavnej pištole (je to dôležité)
14. senzor opatrne zatlačíme do jeho držiaka
Zapojenie
| Pin modulu | Pin na RP2350-Zero |
|---|---|
| VCC | 3.3V |
| GND | GND |
| IR (QTR-8A) | 3.3V |
| Z (analógový výstup) | GP26 (ADC0) |
| S0 | GP13 |
| S1 | GP14 |
| S2 | GP15 |
Jednoduchý program na otestovanie:
void setup() {
pinMode(13, OUTPUT); // S0
pinMode(14, OUTPUT); // S1
pinMode(15, OUTPUT); // S2
Serial.begin(115200);
delay(3000);
Serial.println("are you there?");
mux_select(0);
}
// vyber vstupný kanál 0-7
void mux_select(int i)
{
digitalWrite(13, i & 1);
digitalWrite(14, (i & 2) >> 1);
digitalWrite(15, (i & 4) >> 2);
}
int x = 0;
void loop() {
Serial.print(x / 100);
Serial.print((x % 100) / 10);
Serial.print(x % 10);
Serial.print(":");
for (int i = 0; i < 8; i++)
{
mux_select(i); // vyber kanál
int y = analogRead(27); // prečítaj hodnotu
Serial.print(" "); // zobraz ju
Serial.print(y /100);
Serial.print((y % 100) / 10);
Serial.print(y % 10);
delay(10);
}
Serial.println();
x++;
if (x == 999) x = 0;
delay(1000);
}