Sunteți pe pagina 1din 18

PROGRAMMING - TIMERS

Timers for Microcontrollers The timer function is one of the basic features of a microcontroller. Although some compilers provide simple macros that implement delay routines, in order to determine time elapsed and to maximize use of the timer, understanding the timer functionality is necessary. This example will be done using the PIC16F877 microcontroller in C. To introduce delays in an application, the CCSC macro delay_ms() and delay_us() can be used. These macros provide an ability to block the MCU until the specified delay has elapsed. But what if you instead want to determine elapsed time for say a PID controller, or a data logger? For tasks that require the ability to measure time, it is possible to write code that uses the microcontroller timers. The Timer Different microcontrollers have different numbers and types of timers (Timer0, Timer1, Timer2, watchdog timer, etc.). Check the data sheet for the microcontroller you are using for specific details. These timers are essentially counters that increment based on the clock cycle and the timer prescaler. An application can monitor these counters to determine how much time has elapsed. On the PIC16F877, Timer0 and Timer2 are 8-bit counters whereas Timer1 is a 16-bit counter. Individual timer counters can be set to an arbitrary value using the CCSC macro set_timer0, set_timer1, or set_timer2. When the counter reaches its limit (255 for 8-bit and 65535 for 16-bit counters), it overflows and wraps around to 0. Interrupts can be generated when wrap around occurs, allowing you to count these resets or initiate a timed event. Timer1 is normally used for PWM or

capture and compare functions. Each timer can be configured with a different source (internal or external) and a prescaler. The prescaler determines the timer granularity (resolution). A timer with a prescaler of 1 increments its counter every 4 clock cycles - 1,000,000 times a second if using a 4 MHz clock. A timer with a prescaler of 8 increments its counter every 32 clock cycles. It is recommended to use the highest prescaler possible with your application. Calculating Time Passed The equation to determine the time passed after counting the number of ticks would be: delay (in ms) = (# ticks) * 4 * prescaler * 1000 / (clock frequency) for example . . . Assume that Timer1 is set up with a prescaler of 8 on a MCU clocked at 20 MHz. Assume that a total of 6250 clicks were counted. then . . . delay (in ms) = (# ticks) * 4 * 8 * 1000 / (20000000) delay (in ms) = (6250) / 625 = 10 ms Code in C First you must initialize the timer: long delay; setup_timer_0(T0_INTERNAL | T0_DIV_BY_8); //Set Timer0 prescaler to 8 now put this code in your main loop: set_timer0(0); //reset timer to zero where needed printf("I eat bugs for breakfast."); //do something that takes time //calculate elapsed time in ms, use it for something like PID delay = get_timer0() / 625; //or print out data and put a time stamp on it for data logging printf("%u, %u, %lu\r\n", analog(PIN_A0), analog(PIN_A1), get_timer0()); Note that it is very important that you do not call the get_timer0() command until exactly when it is needed. In the above example I call the timer in my printf() statement - exactly when I need it.

Timer Overflow You should also be careful that the timer never overflows in your loop or the timer will be wrong. If you expect it to overflow, you could call a timer overflow interrupt that counts the number of overflows - each overflow being a known set of time depending on your prescaler. In CCSC, interrupt service routines are functions that are preceded with #int_xxx. For instance, a Timer1 interrupt service routine would be declared as follows: #int_timer1 //timer1 has overflowed void timer1_interrupt() { //do something quickly here //maybe count the interrupt //or perform some task //good practice not stay in interrupt too long } To enable interrupts, the global interrupt bit must be set and then the specific interrupt bits must be set. For instance, to enable Timer0 interrupts, one would program the following lines right after the timer is initialized: enable_interrupts(GLOBAL); enable_interrupts(INT_TIMER0); If you want to stop the application from processing interrupts, you can disable the interrupts using the disable_interrupts(INT_TIMER0) CCSC macro. You can either disable a specific interrupt or all interrupts using the GLOBAL define. Timer Delay Here is another code sample that shows how to create a delay of 50 ms before resuming execution (alternative to delay_ms): setup_timer_0(T0_INTERNAL | T0_DIV_BY_8); //Set Timer0 prescaler to 8 set_timer0(0); //reset timer while (get_timer0() < 3125); // wait for 50ms

PROGRAMACIN - CRONMETROS

Temporizadores para Microcontroladores La funcin del temporizador es una de las caractersticas bsicas de un microcontrolador. Aunque algunos compiladores proporcionan macros simples que implementan rutinas de retardo, con el fin de determinar el tiempo transcurrido y para maximizar el uso del temporizador, la comprensin de la funcionalidad del temporizador es necesario. Este ejemplo se realiza utilizando el microcontrolador PIC16F877 en C. Para introducir retrasos en una aplicacin, el CCSC macro delay_ms () y delay_us () se puede utilizar. Estas macros proporcionar una capacidad de bloquear la MCU hasta que el retardo de tiempo especificado. Pero y si en vez desee determinar el tiempo transcurrido para decir un controlador PID, o un registrador de datos? Para las tareas que requieren la capacidad de medir el tiempo, es posible escribir cdigo que utiliza los temporizadores del microcontrolador. El temporizador de Microcontroladores diferentes tienen diferentes nmeros y tipos de temporizadores (Timer0, Timer1, Timer2, temporizador de vigilancia, etc.) Revise la hoja de datos del microcontrolador que est utilizando para obtener detalles especficos. Estos temporizadores son esencialmente los contadores que se incrementan en base al ciclo de reloj y el temporizador de pre-escalador. Una aplicacin puede controlar estos contadores para determinar cunto tiempo ha transcurrido. En el PIC16F877, Timer0 y Timer2 son de 8-bits, mientras que los contadores de Timer1 es un contador de 16-bit. Contadores individuales del temporizador se puede ajustar a un valor arbitrario usando el CCSC macro set_timer0, set_timer1 o set_timer2. Cuando el contador llega a su lmite (255 para 8-bit y 65535 para 16-bits contadores), se desborda y se envuelve alrededor de 0. Las interrupciones se pueden generar cuando se produce una envoltura alrededor, lo que le permite contar con estos reinicia o iniciar un evento programado. Timer1 se utiliza normalmente para PWM o capturar y funciones de comparacin. Cada temporizador se puede configurar con una fuente diferente (interno o externo) y un preescalador. El prescaler determina la granularidad del temporizador (resolucin). Un temporizador con un prescaler de 1 incrementa su contador cada 4 ciclos de reloj - 1.000.000 veces por segundo si se utiliza un reloj de 4 MHz. Un reloj con un prescaler de 8 incrementa su contador de ciclos de reloj cada 32. Se recomienda el uso de la ms alta prescaler posible con su aplicacin. Clculo de Tiempo Transcurrido La ecuacin para determinar el tiempo transcurrido despus de contar el nmero de garrapatas sera:

retardo (en ms) = (# garrapatas) * 4 * prescaler * 1000 / (frecuencia de reloj) por ejemplo. . . Supongamos que Timer1 est configurado con un prescaler de 8 en una MCU velocidad de reloj de 20 MHz. Supongamos que un total de 6250 clics se contaron. entonces. . . retardo (en ms) = (# garrapatas) * 4 * 8 * 1000 / (20000000) retardo (en ms) = (6250) / 625 = 10 ms Cdigo en C En primer lugar, debe inicializar el temporizador: retardo de tiempo; setup_timer_0 (T0_INTERNAL | T0_DIV_BY_8) / / Set Timer0 prescaler a 8 ahora poner este cdigo en el bucle principal: set_timer0 (0); temporizador / / pone a cero cuando sea necesario printf ("I come bichos para el desayuno."); / / hacer algo que toma tiempo / / Calcular el tiempo transcurrido en ms, usarla para algo como PID delay = get_timer0 () / 625; / / O imprimir los datos y poner una marca de tiempo en que para el registro de datos printf ("% u,% u,% lu \ r \ n", analgica (PIN_A0), analgica (PIN_A1), get_timer0 ()); Tenga en cuenta que es muy importante que usted no llama la get_timer0 () comando hasta exactamente cuando se necesita. En el ejemplo anterior que yo llamo el temporizador en mi declaracin printf () - exactamente cuando lo necesita. Temporizador de desbordamiento Tambin debe tener cuidado de que el tiempo nunca se desborda en su bucle o el temporizador estar mal. Si te lo esperas se desborde, se podra llamar una alarma de desbordamiento del temporizador que cuenta el nmero de desbordamientos - cada desbordamiento de ser un conjunto conocido de tiempo, dependiendo de su prescaler. En CCSC, las rutinas de servicio de interrupcin son funciones que estn precedidos por # int_xxx. Por ejemplo, una rutina de servicio de interrupcin Timer1 se declara como sigue:

# Int_timer1 / / Timer1 se ha desbordado anular timer1_interrupt () { / / Hacer algo rpidamente aqu / / Tal vez contar con la interrupcin / / O realizar alguna tarea / / No quedarse en las buenas prcticas de interrupcin demasiado larga } Para habilitar las interrupciones, el bit de interrupcin global debe ser ajustado y luego los bits de interrupcin especficos deben ajustarse. Por ejemplo, para habilitar interrupciones Timer0, se podra programar las siguientes lneas justo despus de que el temporizador se inicializa: enable_interrupts (GLOBAL); enable_interrupts (INT_TIMER0); Si desea detener la aplicacin de las interrupciones de procesamiento, puede deshabilitar las interrupciones utilizando los disable_interrupts (INT_TIMER0) macro CCSC. Puede desactivar una alarma especfica o todas las interrupciones utilizando el GLOBAL definir. Tiempo de Retardo He aqu otro ejemplo de cdigo que muestra cmo crear un retraso de 50 ms antes de reanudar la ejecucin (alternativa a delay_ms): setup_timer_0 (T0_INTERNAL | T0_DIV_BY_8) / / Set Timer0 prescaler a 8 set_timer0 (0); / / reset timer while (get_timer0 () <3125); / / esperar 50 ms Este sitio ha ayudado con su robot? Danos crdito - back enlace, y ayudar a otros en los foros! Compaa de Robots copyright 2005-2013 foro SMF mensaje mquinas simples -------------------------------------------------------------------------------------------------------------SENSORES - Encoder ROBOT (SLOT, ROTARY, LINEAR) Comercial encoder casero Rotary Encoder de cuadratura del codificador lineal Slot El codificador Robot - Qu es? El codificador es un sensor conectado a un objeto giratorio (tal como una rueda o motor) para

medir la rotacin. Al medir la rotacin de su robot puede hacer cosas tales como determinar el desplazamiento, velocidad, aceleracin, o el ngulo de un sensor de rotacin. Un codificador tpico utiliza sensor ptico (s), un componente mecnico en movimiento, y un reflector especial para proporcionar una serie de impulsos elctricos al microcontrolador. Estos pulsos se puede utilizar como parte de un sistema de control de realimentacin PID para determinar la distancia traduccin, velocidad de rotacin, y / o el ngulo de un robot mvil o pieza de robot. Por ejemplo, si usted tiene una rueda giratoria, y usted quiere medir el tiempo que tarda en girar exactamente 40 grados, o saber cundo ha viajado distancia X, se utiliza un codificador. El sensor se fija en el robot, y la parte mecnica (la rueda del codificador) que giran con la rueda. La salida de un codificador sera una onda cuadrada, por lo que si usted conectar esta seal a un contador digital o microcontrolador a continuacin, puede contar los impulsos. Conociendo la distancia / ngulo entre cada pulso, y el tiempo de principio a fin, es fcil determinar la posicin o el ngulo o la velocidad o lo que sea. Los codificadores son necesarios para la fabricacin de brazos de robot, y muy til para el control de aceleracin ms pesados robots. Tambin son comnmente utilizados para la navegacin laberinto. Clculo de movimiento del robot con un codificador Para cada impulso enviado por el codificador, el giro de la rueda ha recorrido un determinado ngulo. Entonces, cmo se calcula la distancia de un robot viaj por cada clic recibido el codificador? Si el codificador da 5 clicks en un segundo, la velocidad es el robot va a ir? Para hacer este clculo, se necesita ms informacin, tales como el dimetro de la rueda y resolucin del encoder (nmero de clics por 360 grados, o conteos por revolucin). Le recomiendo la lectura de la primera mitad de mi Robot tutorial Dinmica antes de continuar a entender cmo dimetro de la rueda se refiere a la velocidad del robot. Partiendo, debe saber dos cosas - la circunferencia de la rueda y conteos por revolucin. Dividiendo los dos, usted puede fcilmente averiguar la distancia que su robot viaja entre cada clic encoder: circunferencia de la rueda / cuentas por revolucin = distancia recorrida por un encoder Ahora velocidad es slo la distancia dividida por el tiempo. . . As que usando la respuesta en la ecuacin anterior, que se dividen por el tiempo transcurrido desde su contador de tiempo determinado microcontrolador: distancia recorrida por conteo de encoder / tiempo = velocidad Despus de saber la distancia y la velocidad, a continuacin, debe ejecutar un algoritmo de control de realimentacin PID para que su robot puede coincidir con un deseado (predeterminado) la distancia y la velocidad. Calculadora Encoder Para ayudarte mejor, echa un vistazo a la calculadora encoder para

ayudarle con las especificaciones de su robot. Problemas tpicos con codificadores Hay varios problemas con el uso de codificadores de posicin de control del robot. En primer lugar, porque la rueda gira no significa que su robot se mueve. Alguna vez conducido un coche en la nieve? Error puede acumularse rpidamente. Por esta razn, no se recomienda el uso de codificadores de realimentacin del robot (como en los laberintos). En segundo lugar, codificadores tienen una precisin finita. Supongamos que el codificador tiene una resolucin recuento de 360. Esto significa que su precisin ser desviada hasta un total + / - grado. Usted puede pensar, "hey, un grado es muy bueno." Wrong. Falta de precisin multiplica la distancia. Si los peregrinos estaban fuera por un solo grado, la cena de Accin de Gracias consistira en aligator de Florida. Si usted tiene un brazo robot que es de 3 pies de largo, con varias articulaciones, cada uno con encoders, un grado podra significar pulgadas de imprecisin. Otros consejos y Usos Hay varias cosas que debe tener en cuenta al disear encoders. En primer lugar, mantener la luz ambiental de su sensor, como la luz solar. Si la luz brilla en su sensor, se podra leer clics falsos. Tenga cuidado al poner un sistema de control de motores, como una inadecuada puede daar el motor y los circuitos por los cambios bruscos de voltaje. Una vez frito el motor debido a esto. . . Codificadores de alta resolucin para el control de la velocidad puede tomar un montn de tiempo del sistema computacional, por lo que es mejor utilizar una cmara digital IC contador para contar clics codificador que tener los clics recuento microcontroladores. Su controlador puede leer el valor del contador en serie cuando le plazca en su lugar. En la rueda del codificador, puede intentar colorear las lneas negras en diferentes tonos de gris para que el codificador puede identificar qu ngulo est en incluso despus de un reinicio. Su robot juego con el color con el ngulo. Slo tenga cuidado de que el sensor no lee un "tono gris" cuando exactamente entre una lnea en blanco y negro. Al realizar una rueda encoder, me encontr con que la pintura blanca refleja Titanium / infrarrojo bloquea muy bien. Existen muchos tipos de tinta de la impresora no lo hace! Costos de encoder As que todo lo que se dice, hay dos maneras de obtener un codificador. Usted puede gastar $ 50 + en un codificador de alta resolucin. Si su robot tiene varias ruedas o en las articulaciones, usted podra terminar gastando $ 200 +. Para conocer los requisitos de alta resolucin de alta precisin, este es el camino a seguir. Un brazo de robot con varias articulaciones requerir un codificador de mayor precisin, por ejemplo. Usted debe considerar el mirar en una lnea de unos pocos (que se enumeran en el bloque de anuncios en la parte derecha de esta pgina) para ver qu hay disponible. O si no te importa inexactitud (o no pueden permitirse el lujo de alta precisin), puede hacer su propio, de su diseo, por menos de $ 2. Todo lo que necesitas es un circuito IR y

una rueda encoder conectado a la rueda o rotacin / traduccin conjunta. As es como yo normalmente cablear mi sensor encoder. Bsicamente, un PCB con el circuito y la ranura codificador conectado y cableado para ir directamente a mi microcontrolador: Sensor del codificador tpico Y un primer plano de la conexin: Primer del sensor del codificador Encoders con un microcontrolador Es muy recomendable que leas el tutorial en los temporizadores de programacin y de control PID. Cmo hacer una rueda del codificador Haga su propio codificador de ruedas 1) Descargar el pastel de excel bsico codificador grfico o hacer su propio. 2) Modificar para obtener la resolucin deseada (aadir ms 1 y 0). 3) Mueva el grfico como una imagen a pintar, y cada color como en blanco y negro. 4) que imprima en transparencias, y recortarla. 5) Asegrese de cortar el agujero en el centro perfectamente o tendrs problemas despus de tambalearse. 6) Trace sobre el negro con varias capas de infrarrojo de absorcin de tinta, tambin conocido como marcador permanente. 7) Coloque la rueda del codificador en su eje de rotacin, y utilizar un sensor IR slot contar rotacin de la rueda. 8) Asegrese de que el valor de la resistencia en el circuito del sensor IR se selecciona derecho a trabajar con la tinta de rotulador permanente. Estos son algunos diseos de la rueda del codificador Imprim intentar: Impresin de varios diseos de ruedas de codificador Tambin he encontrado un programa codificador de diseo realmente bueno escrito por un tipo llamado Scott Boskovich. Es mucho mejor que el mtodo de clculo de Excel. Dale una oportunidad! Encoder Programa de Diseo Si espera un giro del motor a ir a menudo a un cierto ngulo, tambin puede poner patrones interesantes en la rueda del codificador para hacer el procesamiento ms simple. Se puede usar un LED IR serie IC de leer todos los patrones al mismo tiempo.

Modelado Wheel Encoder con IR LED Array IC Este sitio ha ayudado con su robot? Danos crdito - back enlace, y ayudar a otros en los foros! Compaa de Robots copyright 2005-2013 foro SMF mensaje mquinas simples ---------------------------------------------------------------------------------------------------------------PROGRAMACIN - CONTROL PID

Control PID Un controlador proporcional integral derivativo (PID) es un mtodo comn de control de robots. PID teora le ayudar a disear una ecuacin de mejor control de su robot. Aqu se muestra el esquema bsico de circuito cerrado (un ciclo completo) control: Robot Controller PID Diagrama El punto de un sistema de control es conseguir que sus actuadores del robot (o cualquier cosa) para hacer lo que quieras sin. . . ummmm. . . fuera de control. El sensor (normalmente un codificador en el actuador) determinar lo que est cambiando, el programa se escribe define lo que el resultado final debe ser, y en realidad hace que el accionador del cambio. Otro sensor puede detectar el medio ambiente, dando al robot un sentido ms elevado nivel de a dnde ir.

Terminologa Para ir abriendo boca, aqu estn algunos trminos que usted necesita saber: error - El error es el importe por el que el dispositivo no est haciendo algo bien. Por ejemplo, si el robot va 3 mph pero usted quiere que vaya 2 mph, el error es 3 mph-2 mph = 1 mph. O supongamos que el robot se encuentra en x = 5, pero usted lo quiere en x = 7, entonces el error es de 2. Un sistema de control no puede hacer nada si no hay error - piensa en ello, si el robot est haciendo lo que quiere, que no tendra necesidad de control! proporcional (P) - El trmino proporcional es tpicamente el error. Esta suele ser la distancia a la que desea que el robot para viajar, o tal vez una temperatura que desea algo para estar en. El robot est en la posicin A, pero quiere estar en B, por lo que el trmino P es A - B. derivada (D) - El trmino derivado es el cambio en error cometido durante un perodo de tiempo determinado (t). Por ejemplo, el error era C antes y ahora su D, y el tiempo t ha pasado, entonces el trmino derivado es (CD) / t. Utilice el temporizador en el microcontrolador para determinar el tiempo transcurrido (ver tutorial temporizador). integral (I) - El trmino integral es el error acumulativo realizado durante un perodo determinado de tiempo (t). Por ejemplo, el robot est continuamente en medio de una cierta cantidad todo el tiempo, el trmino que la coger. Digamos que en el instante t1 el error fue A, en t2 que era B, y en T3 fue C. El trmino integral sera A/t1 + + B/t2 C/t3. pellizcar constante (ganancia) - Cada trmino (P, I, D) tendr que ser ajustado en el cdigo. Hay muchas cosas sobre un robot que es muy difcil de modelar matemticamente (friccin baja, la inductancia del motor, el centro de masa, ducktape la celebracin de su robot juntos, etc.) As que muchas veces es mejor construir el robot simplemente, aplicar una ecuacin de control, luego ajustar la ecuacin hasta que funcione correctamente. Un pellizco constante es slo un nmero adivinado que cada trmino con mltiples. Por ejemplo, Kd es la constante derivado. Idealmente desea ajustar la suficiente alta constante de que su tiempo de establecimiento es mnima, pero suficientemente bajo de manera que no hay exceso. P * I * + Kp Ki Kd + D * Curva de control tpico Lo que se ve en esta imagen es tpicamente lo que va a pasar con su robot PID. Se iniciar con un poco de error y la salida del actuador cambiar hasta que el error desaparezca (cerca del valor final). El tiempo que toma para que esto ocurra es llamado el tiempo de establecimiento. Reduccin de los tiempos de asentamiento son casi siempre mejor. Muchas veces usted no puede disear el sistema correctamente y el sistema cambiar tan rpido que rebasa (mal), causando una oscilacin hasta que el sistema se asienta. Y normalmente habr alguna banda de error. La banda de error depende de lo fino que un control de su diseo es capaz de - usted tendr que programar su robot para hacer caso omiso de error dentro de la banda de error o que oscilar probablemente. Siempre habr una banda de error, no importa qu tan avanzado est el sistema.

haciendo caso omiso de la banda de error aceptable ejemplo: si error <= 0.000001 / / determinada subjetivamente aceptable entonces error = 0; / / ignorar La ecuacin PID completo Combinando todo desde arriba, aqu es la ecuacin PID completo: Actuator_Output = Kp * P + Ki * I + D Kd * o en trminos fciles de entender: Actuator_Output = tweakA * (distancia del objetivo) + TweakB * (cambio en el error) + TweakC * (error acumulativo) Simplificaciones Lo bueno de sintonizar un controlador PID es que no es necesario tener una buena comprensin de la teora de control formal para hacer un trabajo bastante bueno de l. La mayora de las situaciones de control funciona con slo una hora de mxima sintona. Mejor an, rara vez se necesita el trmino integral. Eso es correcto, basta con borrar e ignorarlo! La nica vez que usted va a necesitar este trmino es cuando la aceleracin juega un factor importante con su robot. Si el robot es muy pesado, o la gravedad no est en su lado (como colinas empinadas), entonces usted tendr el trmino integral. Pero de todos los robots que he programado, slo dos necesitaban un trmino integral - y los dos robots tenan ms de 30 libras con un requisito de precisin extremadamente alta (milmetro o menos la banda de error). Control sin el trmino integral se refiere comnmente como simplemente el control PD. Tambin hay ocasiones en las que no requieren de un trmino derivado, pero por lo general slo cuando el dispositivo mecnico propio stabalizes, trabaja a velocidades muy bajas para que rebase simplemente no sucede, o simplemente no te requieren buena precisin. Tasa de muestreo Cuestiones La frecuencia de muestreo es la velocidad a la que el algoritmo de control puede actualizarse. Cuanto mayor sea la frecuencia de muestreo, el control de la precisin ms alta que su robot tendr. Reduce la velocidad de muestreo se traducir en mayores tiempos de asentamiento y una mayor probabilidad de rebasamiento (malo). Para aumentar la velocidad de muestreo, que desea una actualizacin ms rpida de las lecturas de los sensores, y un retraso mnimo en su bucle de programa. Es bueno tener el robot reaccionar a un entorno cambiante antes de que se aleja de la mesa, de todos modos. Los seres humanos sufren el problema de la tasa de muestreo tambin (aparentemente potable reduce la frecuencia de muestreo, quin hubiera imaginado?). Drunk Dog tailands con Frecuencia de muestreo reducido La regla de oro es que el tiempo de la muestra debe estar entre 1/10th y 1/100o del sistema

deseado tiempo de establecimiento. Para un robot casero tpico desea una frecuencia de muestreo de unos 20 + / segundo (muy razonable con los microcontroladores actuales). Este sitio ha ayudado con su robot? Danos crdito - back enlace, y ayudar a otros en los foros! Compaa de Robots copyright 2005-2013 foro SMF mensaje mquinas simples ----------------------------------------------------------------------------------------------------------------

SCHEMATICS - INFRARED EMITTER DETECTOR

The Infrared emitter detector circuit is very useful if you plan to make a line following robot, or a robot with basic object or obstacle detection. Infrared emitter detector pair sensors are fairly easy to implement, although involved some level of testing and calibration to get right. They can be used for obstacle detection, motion detection, transmitters, encoders, and color detection (such as for line following).

I highly recommend reading the color sensor tutorial to understand more about infrared.

Note: If you are willing to spend $10-$20 for higher accuracy and better range, considering looking into the Sharp IR Range Finder. Infrared Emitter Detector Basic Circuit R1 is to prevent the emitter (clear) LED from melting itself. Look at the emitter spec sheet to find maximum power. Make sure you choose an R1 value so that Vcc^2/R1 < Power_spec. Or just use R1 = 120 ohms if you are lazy and trust me. R2 should be larger then the maximum resistance of the detector. Measure the resistance of the detector (black) when it is pointing into a dark area and then choose the next larger resister. This means Vout is close to maximum when there is no signal.

Or just use R2 = 11kohms Or use a 20kohm Pot here in series with a 100ohm resistor for white line following calibration. Infrared Emitter Detector Amplified Signal Circuit R1 = 150 ohms (calculate as above) R2 = 220 Kohms (calculate as above, or use Pot for white line following) R3 = 4.7 Kohms R4 = 10 Kohms OP1 = Operational Amplifier LM358 package includes two op amps. Vcc = +5 Volts Notes: R3 and R4 determine the amplification of the op amp, gain = 1 + R4/R3. An appropriate ratio can be determined by connecting up the circuit and measuring the voltage entering the op amp and knowing the threshold value needed at Vout. Vout = (1 + R4/R3)Vin so just solve for the ratio using the values for Vout and Vin. Additional Notes:

The LED and detector have very narrow emission and detection angles, so it matters a LOT how you place them. Place the LED and detector an 1/8 to a 1/4 inch apart maximum, basically parallel and almost contacting. Many objects are opaque to visible light (that means light doesn't pass through it, like wood, black plastic, metal), but are transparent to IR light. Black plastic is a good example. Many forms of black plastic are transparent to IR light, and therefore doesn't make a good shielding material. Aluminum foil covered with electrical tape works as a great shielding material. Most consumer video cameras can see IR light. This is really useful, since you can aim your video camera at the robot, and see the emitted IR light. Many emitters are strong enough that if you aim the robot at a white wall, and turn off all other lights in the room, you can see how the IR light is projected from your robot. Good debugging aid. Another debugging aid is an IR detection card that is available from Radio Shack, and other places. This little card has a material that changes the wavelength of IR light into something you can see. When IR strikes this card, it causes the card to light up and sparkle. Output your IR values on your computer screen real time to optimize positioning and Pot calibration (depends on if you want range detection or

white line detection). You may also want to read the sensor interpretation tutorial.

Often people cannot remember whether the black or the clear LED is the emitter or detector. This is the mnemonic I use to remember, dark colors absorb more light than clear, so the dark LED is the detector. Please note that this isn't always true, as I've heard of a blue emitter and clear detector sold by RadioShack. The easiest way to tell is point a digital camera at it, as most cameras can see IR light. If you plan your robot to work outside, make sure sunlight does not interfere with your sensor readings. The general rule of thumb with sunlight shielding is if you cannot see any data reading difference inside or outside, your sheilding is effective enough to work. Film canisters or electrical tape works very well. A modulated signal (such as in remote controls) also reduces external interference. Depending on resistor values, your IR circuit can be tweaked to better detect color instead of distance.

SCHEMATICS - INFRARED EMITTER DETECTOR

ESQUEMAS - Detector de emisor de infrarrojos Tiny emisor de infrarrojos Detector de Circuito El circuito de emisor infrarrojo detector es muy til si usted planea hacer un robot siguiente lnea, o un robot con objeto bsico o deteccin de obstculos. Sensores infrarrojos emisores par de detectores son fciles de implementar, aunque implicado un cierto nivel de pruebas y calibracin para hacerlo bien. Pueden ser utilizados para deteccin de obstculos, deteccin de movimiento, transmisores, codificadores, y la deteccin de color (tal como para el seguimiento

de lnea). Le recomiendo leer el tutorial sensor de color a entender ms acerca de infrarrojos. Nota: Si usted est dispuesto a gastar $ 10 - $ 20 para una mayor precisin y un mejor rango, teniendo en cuenta que mira en el visor de rango IR Sharp. Emisor de infrarrojos Detector Circuito bsico Basic emisor de infrarrojos circuito detector R1 es evitar que el emisor (claro) LED de fusin en s. Mire la hoja de especificaciones emisor para encontrar la mxima potencia. Asegrese de elegir un valor de R1 para que Vcc ^ 2/R1 <Power_spec. O simplemente usa R1 = 120 ohms si usted es perezoso y confa en m. R2 debe ser ms grande que la resistencia mxima del detector. Mida la resistencia del detector (negro) cuando se est apuntando en una zona oscura y luego elegir el resistor inmediatamente superior. Esto significa Vout es prxima a la mxima cuando no hay seal. O simplemente usa R2 = 11kohms O use una olla 20kohm aqu en serie con una resistencia de 100 ohmios para calibrar blanco siguiente lnea. Detector emisor de infrarrojos circuito de la seal amplificada Detector emisor de infrarrojos amplificados Vout Circuito R1 = 150 ohmios (calcular que el anterior) R2 = 220 Kohms (calcular que el anterior, o el uso de marihuana para el seguimiento de lnea blanca) R3 = 4,7 Kohms R4 = 10 Kohms OP1 = amplificador operacional LM358 paquete incluye dos amplificadores operacionales. Vcc = 5 Volts Notas: R3 y R4 determinar la amplificacin del amplificador operacional, ganancia = 1 + R4/R3. Una relacin apropiada se puede determinar mediante la conexin hasta el circuito y medir la tensin de entrada del amplificador operacional y conociendo el valor umbral necesario en Vout. Vout = (1 + R4/R3) Vin tan slo para resolver la relacin con los valores de Vout y Vin. Notas adicionales: El LED y detector de emisiones tienen muy estrecha y ngulos de deteccin, por lo que importa mucho cmo colocarlos. Coloque el LED y el detector de un 1/8 de pulgada a 1/4 de separacin mxima, bsicamente paralelo y casi en contacto. Muchos objetos son opacos a la luz visible (que significa luz no pasa a travs de l, como la madera, el plstico negro, metal), pero son transparentes a la luz infrarroja. Plstico negro es un buen ejemplo. Muchas formas de negro de plstico son transparentes a la luz IR, y por lo tanto no hace un buen material de blindaje. El papel de aluminio cubierto con cinta aislante funciona

como un gran material de blindaje. La mayora de cmaras de vdeo de los consumidores pueden ver la luz IR. Esto es muy til, ya que se puede apuntar su cmara de video en el robot, y ver la luz emitida IR. Muchos emisores son lo suficientemente fuertes que si tu objetivo es el robot en una pared blanca, y apagar todas las luces de la sala, se puede ver cmo la luz IR se proyecta desde su robot. Buena ayuda depuracin. Otra ayuda depuracin es una tarjeta de deteccin de infrarrojos que est disponible en Radio Shack, y otros lugares. Esta pequea tarjeta tiene un material que cambia la longitud de onda de la luz infrarroja en algo que se puede ver. Cuando esta carta ataca IR, hace que la tarjeta de iluminar y brillar. Salida a sus valores de IR en su tiempo real de la pantalla del ordenador para optimizar el posicionamiento y la calibracin de la mezcla (depende de si desea que el rango de deteccin o la deteccin de lnea blanca). Tambin puede que quiera leer el tutorial interpretacin sensor. A menudo la gente no puede recordar si el negro o el LED claro es el emisor o detector. Este es el mnemotcnico que utilizo para recordar, los colores oscuros absorben ms luz que claro, as que el LED oscuro es el detector. Tenga en cuenta que esto no siempre es cierto, como he odo hablar de un emisor y un detector azul claro vendido por RadioShack. La manera ms fcil de saberlo es apuntar una cmara digital en l, como la mayora de cmaras pueden ver la luz IR. Si usted planea su robot para trabajar fuera, asegrese de que la luz solar no interferir con las lecturas de los sensores. La regla general del pulgar con la luz solar blindaje es si usted no puede ver los datos de lectura diferencia en el interior o en el exterior, su sheilding es lo suficientemente eficaz para trabajar. Latas de pelcula o cinta elctrica funciona muy bien. Una seal modulada (como en los controles remotos) tambin reduce la interferencia externa. En funcin de los valores de resistencia, el circuito IR puede ser ajustado para mejorar la deteccin de color en lugar de la distancia. Este sitio ha ayudado con su robot? Danos crdito - back enlace, y ayudar a otros en los foros! Compaa de Robots copyright 2005-2013 foro SMF mensaje mquinas simples

S-ar putea să vă placă și