Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Radio FM

Componentes y suministros

Desglose básico del sintonizador de FM SparkFun - Si4703
× 1
SparkFun Speaker - 0.5 Watt (8 Ohm)
Un gran altavoz para un pequeño proyecto de radio
× 1
Pantalla gráfica OLED monocromática Adafruit de 0,96 "128x64
Una pequeña pantalla genial con muy buen contraste
× 1
Texas Instruments LM386 - Amplificador de audio - DIP-8
Famoso amplificador operacional para pequeños proyectos de audio a batería
× 1
Arduino Nano R3
× 1
Teclado Adafruit Membrane 1x4
× 2
Convertidor de nivel lógico bidireccional I2C de 4 canales Adafruit
No he usado ese pero debería funcionar
× 1
Antena telescópica FM para conector F
× 1
Tornillo tipo F para montaje en panel kenable
× 1

Acerca de este proyecto

Cuando era niño, solía construir radios AM, pero nunca logré construir radios FM. Eran demasiado complicados. Hoy en día, puede obtener un sintonizador de radio FM completo en un chip, pero estos chips son componentes de montaje en superficie y es difícil para un aficionado trabajar con ellos. Afortunadamente, Sparkfun hace un gran avance para el chip sintonizador de radio FM Si4703 de Silicon Laboratories (hoja de datos), que rompe todos los pines. Le mostraré cómo puede construir una radio FM completa alrededor de esta ruptura y usar un Arduino para controlar las funciones del sintonizador a través de la interfaz de control de dos cables incorporada. Sparkfun proporciona una biblioteca completa que facilita la programación.

Al mismo tiempo, agregué una pequeña pantalla OLED al proyecto con un contraste muy alto y un consumo de energía muy bajo. Por último, pero no menos importante, le mostraré cómo puede construir un amplificador de audio mono con un sonido excelente a partir de un mínimo de partes. La radio terminada funciona con tres baterías AA durante muchas, muchas horas.

Salida básica del sintonizador FM Sparkfun y bus serie I2C

Es fácil trabajar con la ruptura básica. Primero suelde en el cabezal macho para poder usar la ruptura con una placa de pruebas. Consulte la disposición de los pines a continuación. La soldadura en un metro de cable delgado funciona como antena para ANT por ahora.

  • LOUT y ROUT son los canales de salida izquierdo y derecho que conectaremos a nuestro amplificador.

(Si no desea construir su propio amplificador, puede comprar la placa de evaluación, que puede usar directamente con sus auriculares).

  • La tensión de alimentación Vcc es de +3,3 voltios.
  • GND es tierra o 0 voltios.

El Si4703 tiene una interfaz de dos cables, que es un bus en serie que permite controlar el sintonizador desde un Arduino a través de la comunicación en serie. Más exactamente, el bus se llama I2C (circuito interintegrado; pronunciado I-cuadrado-C o I-dos-C) y usa solo dos líneas bidireccionales:

  • Línea de datos en serie (SDA) y
  • Línea de reloj en serie (SCL).
  • Además viene la línea Reset (RST).

En el Si4703, SDA se llama SDIO y SCL se llama SCLK. Todos los Arduinos tienen I2C incorporado. Si desea obtener más información sobre el autobús I2C, Tom Igoe y Jeff Feddersen han hecho un gran video. En nuestro bus I2C, el Arduino actúa como maestro, mientras que tanto el Si4703 como la pantalla OLED actúan como esclavos.

Voltajes de bus I2C y elección de Arduino

Los voltajes utilizados en el Si4703 y la pantalla OLED en el bus I2C son de 3,3 voltios. Por esa razón, Sparkfun aconseja en su guía de conexión que use un Arduino de 3.3 voltios. Esto significa usar un Arduino Pro Mini que es un poco más difícil de programar ya que carece de un conector USB y tiene que programarse con una ruptura FTDI. Pero hay otro problema:el Arduino Pro Mini funciona a 8 MHz, la mitad de la velocidad de un Arduino Uno o Nano. Mis pruebas mostraron que esto es demasiado lento para impulsar la pantalla OLED. Como realmente quería mantener la pantalla, decidí usar un Arduino Nano (16 MHz) que tiene un nivel de señal de 5 voltios en el bus I2C y usar convertidores de nivel lógico I2C bidireccionales (I2C-shifters) para conectar las señales del bus de 3.3 voltios. de la pantalla y el chip de radio. Tenía algunos cambiadores I2C por ahí con dos señales cada uno que usé en el proyecto. Necesitamos cambiar de nivel un total de tres señales:SDA, SCL y RST. Tuve que usar dos cambiadores I2C. (Me vinculé en la descripción anterior a una palanca de cambios I2C con 4 señales que pueden ayudarlo a ahorrar algo de cableado).

El Nano es casi idéntico al Uno pero ocupa mucho menos espacio. Si lo desea, puede usar el Uno en su lugar. Hice eso para la primera prueba. Ambos tienen conectores USB y son fáciles de usar con Arduino IDE.

Esquemas de conexiones Arduino a radio y pantalla

A continuación, veamos el cableado alrededor del Nano y los detalles de las conexiones del bus I2C. (Si no hay un punto, los cables simplemente se cruzan).

Como puede ver, el proyecto funciona con tres pilas AA (4,5 voltios). Las baterías están conectadas directamente al pin de 5 Voltios del Arduino Nano, sin pasar por el regulador de voltaje. De esta manera, un Nano funcionará felizmente con 3 baterías AA. ¡ADVERTENCIA! ¡Desconecte siempre las baterías antes de conectar el Nano a través de USB a su computadora! De lo contrario, los 5 voltios de su computadora sufrirán un cortocircuito con sus baterías. Durante la primera fase de prueba, ejecute el circuito desde la fuente de alimentación USB sin baterías. Si quieres ir a lo seguro, usa seis baterías AA (9 voltios) y conecta el polo positivo al pin VIN (en lugar del pin de 5 voltios) del Nano . De esa manera, la administración de energía del Nano apagará automáticamente las baterías cuando conecte el cable USB. (En su lugar, puede usar una batería de bloque de 9 voltios, pero es posible que solo dure unas pocas horas).

Arduino SDA (A4) y SCL (A5) están conectados al lado de 5 voltios de la palanca de cambios I2C. Además, usamos D2 como señal RST. En el lado de 3.3 voltios de la palanca de cambios I2C, nos conectamos a SDIO, SCLK y RST del Si4703. Para la pantalla OLED, es suficiente conectarse a SDA y SCL. (Compré el mío en banggood.com porque era de dos colores:amarillo (filas superiores) y azul y no había pin RST).

Conecte todos los componentes a la salida de 3.3 voltios del Nano y a tierra. La palanca de cambios I2C necesita además 5 voltios en el lado de alto voltaje.

Los pines IO D5-D12 están conectados a los dos teclados. Al presionar un botón se conecta la entrada a tierra.

Amplificador de audio de bajo voltaje LM386

Usé el chip LM386 para construir un amplificador mono. El LM386 existe desde los años setenta. Es un amplificador de potencia diseñado para su uso en aplicaciones de consumo de bajo voltaje (hoja de datos). La ganancia se establece internamente en 20 para mantener bajo el recuento de piezas externas, pero la adición de una resistencia externa y un condensador entre los pines 1 y 8 aumentará la ganancia a cualquier valor de 20 a 200. Trabajaremos con la ganancia más baja de 20, que es más que suficiente si usa un altavoz de 8 ohmios.

Los esquemas de la parte del amplificador de audio del proyecto se proporcionan a continuación:

Veamos primero el Si4703. En el lado izquierdo, se indican las conexiones de la señal I2C al Arduino. Los canales de salida de audio deben conectarse de la siguiente manera:la resistencia R4 debe conectarse a LOUT y R5 a ROUT. Luego, las dos señales se combinan en una señal MONO. Hay condensadores en las salidas de la placa de conexiones, por lo que no es necesario agregar uno. R2 y R3 definen un divisor de voltaje para disminuir el nivel de la señal de entrada en el amplificador. Por supuesto, podría reemplazar R2 y R3 con un potenciómetro y usarlo para regular el volumen. Pero queremos controlar el volumen digitalmente. El nivel de salida de Si4703 se puede aumentar sobre I2C paso a paso de 1 a 15. Con R2 / R3, puede hacer coincidir esto con el amplificador experimentando con diferentes resistencias. Por ejemplo, si aumenta R3, aumenta el volumen.

El circuito se toma directamente de la hoja de datos. C2 debe ser de al menos 220 µF. Los valores más pequeños amortiguarán la respuesta de los graves. Si desea aumentar los graves, consulte la hoja de datos. Construya el circuito en una placa y experimente agregando / quitando componentes:C3 debe colocarse cerca del chip. C3 y C1 son opcionales.

Hay muchos videos en youtube sobre proyectos LM386 y muchos se quejan del mal sonido. La mayoría de ellos probablemente carecen de una distribución adecuada del suelo. Si miras los esquemas, ves cómo mantuve la tierra de entrada separada de la tierra de salida, lo cual es muy importante. Se encuentran en el pin 4, el pin de tierra del chip. Si desea obtener más información sobre esto, mire este video de JohnAudioTech (y este para un proyecto LM386 completo).

El LM386N-1 necesita un mínimo de 4 voltios y entrega unos cientos de mWatt. Lo ejecuto con 3 pilas AA (4,5 voltios) y puedo variar el volumen entre 1 y 10 y suena muy bien. Sin embargo, para un voltaje de suministro tan bajo, es muy importante utilizar un altavoz de 8 ohmios (no de 4 ohmios). Si subo el volumen a 15, empieza a sonar distorsionado. Si desea reproducir su radio a un volumen muy alto, aumente el voltaje de suministro a 9 voltios.

Creación de prototipos

Le recomiendo encarecidamente que primero cree todo el proyecto en dos placas de prueba. Mantenga el Arduino, I2C-shifter y la pantalla OLED juntos en un panel de pruebas, mientras que tiene la salida Si4703 y el amplificador de audio juntos en el otro panel para mantener las distorsiones acústicas al mínimo. En mi primer prototipo, tenía el Si4703 cerca del Arduino con cables de señal largos a la parte de audio (ver imagen) y esto causaba distorsiones.

Alimente el Arduino desde USB con la salida regulada de 3.3 voltios del Arduino que alimenta la pantalla y el chip de radio. Alimente el LM386 con baterías (4.5 - 9 Voltios).

El código del programa

Deben incluirse las siguientes bibliotecas:

  #include  #include  #include  #include  #include   

Si no sabe cómo instalar bibliotecas, consulte la siguiente guía. La biblioteca Sparkfun se encuentra aquí y proporciona funciones de alto nivel para hablar con el Si4703 sin tener que preocuparse por todos los pequeños detalles. Las bibliotecas de visualización de Adafruit con tutorial se encuentran aquí.

A continuación, necesitamos hacer algunas definiciones:

  // Botones de entrada en la radio #define volDown 9 #define volUp 10 #define channelDown 11 #define channelUp 12 // Si4703 radio chip #define resetPin 2 #define SDIO A4 #define SCLK A5 Si4703_Breakout radio (resetPin, SDIO, SCLK); #define SI4703Address 0x10 // Si4703 Dirección I2C.  

El uso de #define es una forma de hacer que el código fuente sea más legible. Una vez que haya definido de una vez por todas que volDown se refiere al pin 9, escriba volDown cada vez que quiera decir D9.

A continuación, miramos la sección de configuración:

  // Definición de variables int channel; int volumen; void setup () {// Establecer resistencias pull up internas en las entradas pinMode (volDown, INPUT_PULLUP); pinMode (volUp, INPUT_PULLUP); pinMode (channelUp, INPUT_PULLUP); pinMode (channelDown, INPUT_PULLUP); // Inicializar radio radio.powerOn (); canal =882; radio.setChannel (canal); volumen =4; radio.setVolume (volumen); }  

Los pines 9-12 se definen como pines de entrada. El parámetro INPUT_PULLUP conecta una resistencia pullup interna (dentro del chip ATmega) de + 5V al pin de entrada. En consecuencia, el nivel de señal del pin será ALTO a menos que presione el botón (botón presionado =BAJO).

La biblioteca Sparkfun facilita el control de la radio a través de I2C con las funciones principales powerOn (), setChannel () y setVolume ().

El bucle principal escucha que se presione un botón y luego actúa en consecuencia:

  void loop () {// Bajar volumen if (digitalRead (volDown) ==LOW) {if (volume> 0) volume--; radio.setVolume (volumen); UpdateDisplay (); retraso (100); } // Subir volumen if (digitalRead (volUp) ==LOW) {if (volumen <15) volume ++; radio.setVolume (volumen); UpdateDisplay (); retraso (100); } // Canal hacia abajo if (digitalRead (channelDown) ==LOW) {channel =radio.seekDown (); UpdateDisplay (); retraso (100); } // Canal arriba if (digitalRead (channelUp) ==LOW) {channel =radio.seekUp (); UpdateDisplay (); retraso (100); }}  

Eche un vistazo al código fuente completo a continuación. Incluye cuatro botones para estaciones preestablecidas (donde puede poner sus estaciones favoritas) y todo el código necesario para actualizar la pantalla OLED, que usa casi toda la RAM disponible. Te remito al excelente tutorial de Adafruit, si quieres aprender sobre la biblioteca SSD1306. Tenga en cuenta que la biblioteca no puede determinar el tamaño de la pantalla de su pantalla mediante software. Tienes que especificarlo después de haber instalado Adafruit_SSD1306.h. Abra el archivo de la biblioteca, lea las instrucciones en los comentarios y edite el archivo en consecuencia.

Hay una función "avanzada" en el código fuente para medir el nivel de la batería comparándolo con una referencia interna de 1,1 voltios dentro del chip AVR. Como estamos funcionando con baterías, no tenemos un voltaje de referencia constante de 5 voltios para medir el voltaje de la batería. Si desea obtener más información, lo remito a los siguientes artículos:Secret Arduino Voltmeter y el foro Gammon.

Desde el prototipo de la placa de pruebas hasta la radio terminada

Si ha llegado hasta aquí, tiene un prototipo completamente funcional en dos placas de prueba. Transfieramos el circuito a dos perfboards y coloquemos toda la radio dentro de una bonita caja de proyecto. Si no ha hecho esto antes, no tenga miedo de intentarlo. No hay nada que realmente pueda hacer mal y aprende las habilidades necesarias a medida que avanza. Collin de Adafruit ha hecho dos buenos videos introductorios que puede ver:Protoboards y perfboards y Prototyping de Perfboard.

Decidí poner el Nano junto con las palancas de cambio I2C (tuve que usar dos palancas de cambio, ver más arriba) en una placa perfilada:

Para realizar este prototipo de placa perfilada, seguí un tutorial, que recomiendo estudiar en detalle:Cómo hacer prototipos sin utilizar placas de circuito impreso. Especialmente importante es el Paso 3:¡haga su plan de cableado! La planificación es el paso más importante y la diferencia entre el éxito y el fracaso. Algunos consejos adicionales:utilicé cable negro 22 AWG, que era demasiado grueso y difícil de trabajar como puede ver en la imagen. En su lugar, obtenga un poco de "alambre de envoltura de alambre" (30 AWG) en diferentes colores. ¡Y usa un perfboard más grande! Hice encabezados de pines y usé cables de puente Dupont para conectar las diferentes partes.

Coloque el Si4703 y el amplificador de audio juntos en una segunda placa de perforación. Aquí hay un pequeño tutorial para un amplificador LM386, que puede usar como inspiración:De Schematics a Veroboard. Sin embargo, le sugiero que utilice un zócalo IC para el LM386. Alternativamente, JohnAudioTech ha hecho un buen video para un proyecto completo de amplificador LM386 con un buen diseño incluido, que tiene las tierras de alimentación separadas de las tierras de la señal.

A continuación, necesita un buen recinto de proyecto para su radio. Nuevamente, Collin muestra en este video cómo hacerlo. Me gustó especialmente la idea de la cinta adhesiva para marcar dónde perforar. Compré cinta de pintor que no es demasiado pegajosa. Además de cinta adhesiva y un taladro, use una pistola de pegamento caliente. Simplemente pegue el altavoz, las placas de perfilado, el paquete de baterías, etc.en la carcasa y luego conecte las piezas con cables de puente Dupont. El producto final se ve así:

Era demasiado optimista y compré una caja de proyecto bastante pequeña como puede ver. Para hacer una abertura cuadrada para la pantalla en el panel frontal, corté con una cuchilla Stanley desde el interior (para evitar marcas feas en el exterior). No muy elegante, pero funcionó bien. Luego pegué la pantalla en la abertura con pegamento termofusible. Marqué el tamaño del altavoz en el panel frontal, perforé muchos orificios de 3 mm para el sonido y pegué el altavoz desde la parte posterior.

En la imagen, todavía se puede ver el cable de la antena. A continuación, compré un conector tipo F de montaje en panel y una antena FM telescópica. Aunque la antena tiene solo 50 cm de largo, la recepción es muy buena y el pequeño altavoz suena sorprendentemente bien. Sin embargo, lo más sorprendente es el hecho de que aún no he cambiado las pilas ni una sola vez, aunque he estado escuchando mi pequeña radio durante muchos días.

Otros proyectos de radio

Inicialmente me inspiré para hacer este proyecto cuando vi el video de Great Scott, quien también construyó una bonita caja de madera para proyectos para su radio en un video posterior. Sin embargo, mucho más cerca en detalles de mi radio está la radio FM de bolsillo Si4703 de John Owen, ya que usa el desglose Sparkfun y deberías echar un vistazo de cerca a la descripción de su proyecto. He utilizado su código fuente para la función Mono y para la medición del voltaje de la batería.

Código

Radio FM
Repositorio de Github con código fuente para Arduino Nanohttps://github.com/Notthemarsian/FM-radio

Esquemas

Diagramas de Fritzing radio FM
Ambos archivos e imágenes originales de Fritzing / PDFhttps://github.com/Notthemarsian/FM-radio/tree/master/Fritzing%20diagrams

Proceso de manufactura

  1. Amplificador de audio de clase B
  2. 555 Oscilador histerético
  3. Circuitos de radio
  4. Principios de la radio
  5. Radio
  6. Propagación de radio de tierra a tierra
  7. UnifiedWater v1
  8. Radio por Internet Pi-Arduino
  9. Radio FM de cabina de ducha basada en Arduino
  10. Cuadro de votación móvil
  11. Comunicaciones por radio basadas en átomos