En este video veremos como controlar la intensidad de una tira de led mediante bluetooth y pwm.
Circuito
El circuito se compone de un arduino uno un módulo bluetooth hc-06 un transistor npn Tip31c, un resistor de 120 ohm y por supuesto una tira de led.
La tira de led se alimenta con 12 voltios no así el arduino que usa 5 voltios para su funcionamiento. A través del pin número 3 del arduino se conecta a la base del transistor Tip31c, no olvidemos colocar un resistor de 120 ohm a la base para no dañar al transistor.
Al aumentar la tensión, en el pin 3 este también hace que aumente la tensión en el transistor, lo cual genera que la tira de led se ilumine más.
El módulo bluetooth hc-06 establece la conexión entre el arduino uno y el smartphone que estemos usando, la velocidad de conexión es de 115200 bps.
Código fuente
Aplicación App inventor
Descargar la aplicación para android
Hoja de datos Tip31c
Módulo bluetooth hc-06
Características:
- Especificación bluetooth v2.0 + EDR (Enhanced Data Rate)
- Modo esclavo (Solo puede operar en este modo)
- Puede configurarse mediante comandos AT (Deben escribirse en mayúscula)
- Chip de radio: CSR BC417143
- Frecuencia: 2.4 GHz, banda ISM
- Modulación: GFSK (Gaussian Frequency Shift Keying)
- Antena de PCB incorporada
- Potencia de emisión: ≤ 6 dBm, Clase 2
- Alcance 5 m a 10 m
- Sensibilidad: ≤ -80 dBm a 0.1% BER
- Velocidad: Asincrónica: 2 Mbps (max.)/160 kbps, sincrónica: 1 Mbps/1 Mbps
- Seguridad: Autenticación y encriptación (Password por defecto: 1234)
- Perfiles: Puerto serial Bluetooth
- Módulo montado en tarjeta con regulador de voltaje y 4 pines suministrando acceso a VCC, GND, TXD, y RXD
- Consumo de corriente: 30 mA a 40 mA
- Voltaje de operación: 3.6 V a 6 V
- Dimensiones totales: 1.7 cm x 4 cm aprox.
- Temperatura de operación: -25 ºC a +75 ºC
Aplicaciones:
- Comunicación inalámbrica entre microcontroladores
- Comunicación inalámbrica entre computadoras y microcontroladores
- Comunicación inalámbrica entre teléfonos móviles o tabletas y microcontroladores
Estriado de playground
Señales analógicas de salida en Arduino (PWM).
En este apartado vamos a ver los fundamentos en los que se basa la generación de salidas analógicas en Arduino. El procedimiento para generar una señal analógica es el llamado PWM.
Señal PWM (Pulse-width modulation) señal de modulación por ancho de pulso.
Donde:
– PW (Pulse Width) o ancho de pulso, representa al ancho (en tiempo) del pulso.
– length/period (periodo), o ciclo , es el tiempo total que dura la señal.
La frecuencia se define como la cantidad de pulsos (estado on/off) por segundo y su expresión matemática es la inversa del periodo, como muestra la siguiente ecuación.
1 2 3 |
1 frequency = ------------ period |
El periodo se mide en segundos, de este modo la unidad en la cual se mide la frecuencia (hertz) es la inversa a la unidad de tiempo (segundos).
Existe otro parámetro asociado o que define a la señal PWM, denominado “Duty cycle”, Ciclo de Trabajo, el cual determina el porcentaje de tiempo que el pulso (o voltaje aplicado) está en estado activo (on) durante un ciclo.
Por ejemplo, si una señal tiene un periodo de 10 ms y sus pulsos son de ancho (PW) 2ms, dicha señal tiene un ciclo de trabajo (duty cycle) de 20% (20% on y 80% off). El siguiente gráfico muestra tres señales PWM con diferentes “duty cycles”.
La señal PWM se utiliza como técnica para controlar circuitos analógicos. El periodo y el ciclo de trabajo (duty cycle) del tren de pulsos puede determinar la tensión entregada a dicho circuito. Si, por ejemplo, tenemos un voltaje de 5v y lo modulamos con un duty cycle del 10%, obtenemos 0.5V de señal analógica de salida.
Las señales PWM son comúnmente usadas para el control de velocidad de motores DC (si decrementas el ciclo de trabajo sobre la señal de control del circuito de potencia que actúa sobre el motor el motor se mueve más lentamente), ajustar la intensidad de brillo de un LED, etc.
En Arduino, con ATmega168 o ATmega328, la señal de salida PWM (pines 3,5,6,9,10, y 11) es una señal de frecuencia 490 Hz aproximadamente y que sólo nos permite cambiar el “duty cycle” o el tiempo que el pulso está activo (on) o inactivo (off), utilizando la función analogWrite().
Otra forma de generar señales PWM es utilizando la capacidad del microprocesador. La señal de salida obtenida de un microprocesador es una señal digital de 0 Voltios (LOW) y de 5 voltios (HIGH).
Con el siguiente código y con sólo realizar modificaciones en los intervalos de tiempo que el pin seleccionado tenga valor HIGH o LOW, a través de la función digitalWrite (), generamos la señal PWM.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/* señal PWM */ int digPin = 10; // pin digital 10 void setup() { pinMode(digPin, OUTPUT); // pin en modo salida } void loop() { digitalWrite(digPin, HIGH); // asigna el valor HIGH al pin delay(500); // espera medio segundo digitalWrite(digPin, LOW); // asigna el valor LOW al pin delay(500); // espera medio segundo } |
El programa pone el pin 10 a HIGH una vez por segundo durante medio segundo (ciclo de trabajo 50%), la frecuencia que se genera en dicho pin es de 1 pulso por segundo o 1 Hz de frecuencia (periodo de 1 segundo). Cambiando la temporización del programa, podremos cambiar el ciclo de trabajo de la señal. Por ejemplo, si cambiamos las dos líneas con delay(500) por delay(250) y delay(750), modificamos el ciclo de trabajo a 25%; ahora, el programa pone el pin 10 a HIGH una vez por segundo durante 1/4 de segundo y la frecuencia sigue siendo de 1 Hz.
Utilizando la función analogWrite(pin,value) podemos obtener la misma señal a una frecuencia de 490 Hz aproximadamente. Para una señal PWM con ciclo de trabajo 50% hay que poner en el parámetro value, de la función analogWrite(pin,value), el valor de 127.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/* señal PWM en el pin 10 de ciclo de trabajo 50%*/ int digPin = 10; // pin digital 10 void setup() { // no se declara el modo del pin //como salida analógica } void loop() { analogWrite(digPin,127); // Señal PWM a 50% en el PIN 10 } |
De forma que cambiando el valor del parámetro value en la función analogWrite(pin,value), podemos obtener distintos ciclos de trabajo:
value | Ciclo de trabajo |
---|---|
0 | 0% |
63 | 25 |
127 | 50% |
190 | 75% |
255 | 100% |
Tal vez pueda interesarte proyectos en IOT, raspberry pi, arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas.
hola amigo nos puedes ayudar xfa que no nos funciona nos copila la informacion bien pero ala hora de regularlo no nos funciona