{"id":679,"date":"2019-12-17T00:38:53","date_gmt":"2019-12-17T00:38:53","guid":{"rendered":"http:\/\/robots-argentina.com.ar\/didactica\/?p=679"},"modified":"2020-12-09T00:57:44","modified_gmt":"2020-12-09T00:57:44","slug":"ingresar-lectura-de-varios-sensores-a-traves-de-un-unico-pin-analogico","status":"publish","type":"post","link":"https:\/\/robots-argentina.com.ar\/didactica\/ingresar-lectura-de-varios-sensores-a-traves-de-un-unico-pin-analogico\/","title":{"rendered":"Ingresar lectura de varios sensores a trav\u00e9s de un \u00fanico pin anal\u00f3gico"},"content":{"rendered":"

\"\"<\/a><\/p>\n

Cuando queremos crear un robot que distinga el blanco del negro sobre una superficie, se realiza esa detecci\u00f3n con sensores infrarrojos reflectivos. Si la necesidad de determinar las ubicaciones debajo del sensor requiere precisi\u00f3n, hay que usar conjuntos de varios sensores, y sus salidas conectarlas a varios pines de entrada de un microcontrolador.<\/p>\n

Por ejemplo, para seguidores de l\u00ednea veloces (velocistas) tenemos la opci\u00f3n de utilizar un sensor como el de la imagen de arriba, el QTR-8A<\/a><\/strong>, fabricado por Pololu<\/a><\/strong>. O un conjunto sensor similar hecho por nosotros con, por ejemplo, un conjunto de CNY-70<\/a><\/strong>.<\/p>\n

\"\"<\/a><\/p>\n

La mayor\u00eda de las veces los microcontroladores que usamos para controlar un robot tienen una cantidad limitada de pines de entrada y salida, y si tenemos que usar uno de \u00e9stos por cada sensor infrarrojo tendremos problemas para a\u00f1adir funcionalidades a nuestro robot: comunicaci\u00f3n serie, aceler\u00f3metros, giroscopios, I2C<\/a><\/strong>, sensores de distancia, detectores de choque, pulsadores o llaves, motores, tac\u00f3metros, leds, etc.<\/p>\n

En los robots seguidores de l\u00ednea el m\u00ednimo es dos sensores infrarrojos, aunque con esta cantidad el robot seguidor se mover\u00e1 oscilando, y es muy posible que se escape en curvas cerradas o cruces de l\u00edneas. En los robots de Sumo se necesitan 4, incluso m\u00e1s si es un dise\u00f1o m\u00e1s sofisticado, y en los seguidores de l\u00ednea velocistas suele colocarse una hilera de 6 sensores o m\u00e1s.<\/p>\n

Esto lleva al uso de demasiado pines de entrada en nuestro micro. Se podr\u00eda utilizar alg\u00fan tipo de multiplexor (como el CD74HC4067<\/a><\/strong>) para ir leyendo c\u00edclicamente los sensores, pero eso significa el uso adicional de al menos 3 l\u00edneas, necesarias para seleccionar las entradas del multiplexor si se trata de un conjunto desde 6 y hasta 8 sensores, o 4 l\u00edneas adicionales si tenemos hasta 16 sensores. (Esta cantidad de sensores no es excesiva en un robot medianamente operativo y desarrollado.)<\/p>\n

\"\"<\/a><\/p>\n

Pero veremos una manera de leer varios sensores de infrarrojos usando s\u00f3lo un pin anal\u00f3gico del microcontrolador.<\/p>\n

La idea es vieja: convertir la activaci\u00f3n de los sensores en una selecci\u00f3n de resistores que aportan cada uno diferentes corrientes, y que al sumarse entregan una salida combinada, con valores diferentes de voltaje. A esta configuraci\u00f3n se le llama \u201cresistor ladder<\/a><\/strong>\u201d (escala de resistores) y lo que construimos es, en concreto, un convertidor digital a anal\u00f3gico<\/a><\/strong>.<\/p>\n

Al usar varias resistencias, dependiendo de la entrada que se active, el pin del micro recibe una tensi\u00f3n distinta. Si el conjunto de resistores est\u00e1 bien dise\u00f1ado, se puede determinar cu\u00e1l es la entrada que se ha activado.
\n