Conector Borràs

De wikijoan
Salta a la navegació Salta a la cerca

Introduccó

Desenvolupament

(TBD). Cas senzill: encendre una bombeta

(TBD). Cas complicat: encendre una bombeta verda o vermella, fer un so per l'encert o un altre so per l'errada. Necessito un microcontrolador.

El que em preocupa és que si tinc 20 preguntes, no disposo de 20 entrades en el microcontrolador. Per tant, una possibilitat és fer un array de manera que depenent de l'interruptor que es tanca, obtinc un valor variable de tensió que puc ficar en una entrada analògica. Cercant una mica veig que hi ha una configuració que es diu Ladder R-2R que em pot donar la solució.

Ladder R-2R

Circuit11.jpg

(foto treta de http://www.tuxgraphics.org/electronics/201005/bench-power-supply-v3.shtml)

(foto treta de http://tronixstuff.com/tag/dac/)

Les dues configuracions són la mateixa, i mostren la forma de conectar una xarxa R-2R a l'entrada analògica de l'arduino o d'un ATMEGA 168.

El que em preocupa és la precisió de la meva entrada analògica, a veure si realment puc discernir entre dos interruptors consecutius. Hauré de tenir en compte que la precisió de les resistències sigui del 1%.

Si tinc 20 preguntes, tinc un ladder de 20. Utilitzant resistències de 1K i 2K, els dos resultats que s'aproximent més són (veure imatge, TBD):

V1 = 21/23 = 0.913
V2 = 20/22 = 0.909
V3 = 19/21 = 0.905
...
V20 = 2/4 = 0.5

La resolució que tinc en el pin és de 10 bits (1024 valors), i per tant els valors teòrics que obtinc són:

0,913x5V = 4.565 x 1024/5 = 935
0.909x5V = 4.545 x 1024/5 = 931
...
0.5x5V = 2.5 x 1024/5 = 512

El tema és, puc distingir amb seguretat entre el valor de 935 i 931. 935 equivaldria al rang [933,1024]. 931 equivaldria al rant [929,932]. Aquest és el cas en què estan més junts. S'ha de fer la prova. Menos preguntes, més separació.

Ladder R-2R, prova amb Arduino

R-2R.jpg

Hem muntat un ladder de 20 esglaons amb resistències de 1K-2K a la protoboard connectat amb l'Arduino, i el resultat és satisfactori.

Amb 20 esglaons, els últims 5 esglaons són els problemàtics, encara que no hi ha solapament. Per als altres esglaons no hi ha problema. Val a dir que amb una escala de menys esglaons desapareix el problema. I això és una bona notícia perquè disposo de 6 entrades analògiques. Per tant, utilitzant ladders de 20 esglaons puc fer fins a 60 preguntes en el cas de més risc. I utilitzant ladders de 10 esglaons puc fer fins a 30 preguntes amb seguretat. (Recordar que per a la pregunta necessito un ladder, i per la resposta un altre ladder. Aleshores si els ladders coincideixen puc veure si hi encert o error).

El codi que he provat:

int sensorPin = A0;    // select the input pin
int sensorValue = 0;
int valor_min = 1023;
int valor_max = 0;
    
void setup() {
  Serial.begin(9600); 
}

void loop() {

    sensorValue = analogRead(sensorPin);

    if (sensorValue < valor_min) {
      Serial.print("min: ");
      Serial.println(sensorValue);
      valor_min = sensorValue;
    }
    
    if (sensorValue > valor_max) {
      Serial.print("max: ");
      Serial.println(sensorValue);
      valor_max = sensorValue;
    }
    
    delay (100);

}

I els resultats s'han obtingut ficant els 5V a les diferents entrades:

//ladder R-2R de 20 esglaons, amb resistncies de 1K i 2K
//932-936 20
//928-931 19
//924-928 18
//919-923 17
//914-918 16
//908-912 15
//901-905 14
//893-897 13
//885-889 12
//876-879 11
//864-868 10
//851-855 9
//836-840 8
//816-820 7
//794-798 6
//766-770 5
//729-733 4
//679-683 3
//609-615 2
//508-512 1

Prototip ATMEGA168

Ara que ja veig que el ladder R-2R funciona, he de decidir quantes preguntes vull. Els valors mínims i màxims de cada rang els hauré de ficar en el firmware,i per saber els valors minims i màxims que he de ficar, necessitaré una pantalla LCD que me'ls mostri.

Primer es carrega un firmware que té per objectiu calibrar el rang dels ladders. Faré les lectures dels ladders, anotaré els valors mínim i màxim de cada esglaó. I aleshores ja es pot ficar el firmware definitiu.

Comarques de Catalunya

Són 42 comarques que dividit per 3 són 14. Per tant, puc fer 3 ladders de 14 per a les preguntes, i 3 ladders de 14 per a les respostes, i utilitzo els 6 pins analògics.

Utilitzar un mòdul LCD amb el Atmega168

Per què necessito un mòdul LCD? Doncs perquè el sistema s'ha de calibrar. És a dir, necessito saber quins valors mínim i màxim em dóna cada esglaó dels 6 ladders que s'han de muntar (no dóno per suposat que els valors són els mateixos que obtenia amb l'Arduino, ni que cada ladder donarà el valor).

Primer es carrega el software de calibració, i amb el LCD connectat, ja puc apuntar els valors mínims i màxims de cada esglaó.

Quan tingui tots els valors, els puc introduir en el software definitiu.


creat per Joan Quintana Compte, octubre 2015