Asumimos el control: SPI y potenciómetro digital
En el último video mostré un Filtro Activo Universal que pude configurar con un potenciómetro de dos bandas, aquí estoy reemplazando el potenciómetro con un estado sólido con un procesador controlado. Para aquellos que son demasiado jóvenes para recordar, solíamos decir "sustancia sólida" para diferenciar entre eso y algo que usaba tubos de electrones ... en su mayor parte queríamos decir que se podía dejar caer sin que se rompiera.
Uso de SPI para configurar el corte del filtro de paso bajo
Filtro UAF42 con macetas de doble banda
La forma más común de controlar los chips periféricos disponibles diariamente es mediante el uso de uno de los protocolos seriales comunes, como I2C y SPI. En el tiempo anterior, cuando teníamos solo 8 bits y teníamos suerte si 7 de ellos funcionaban, solíamos recordar mapear un controlador periférico o de entrada / salida (E / S), lo que significa que teníamos que realizar muchas comprobaciones y datos. líneas de microprocesador como Datos, Dirección, Lectura / Escritura, relojes del sistema y varias otras señales solo para escribir en un par de registros de control enterrados en un chip.
Hoy en día hay una proliferación de microcontroladores, que tienden a tener capacidad de interfaz serial incorporada, es bastante fácil controlar una gama completa de funciones periféricas; tanto digitales como analógicos. En lugar de mapear cada periférico utilizando los datos y las líneas de dirección mencionados, que es un enfoque muy paralelo, el controlador se comunica con los periféricos en serie utilizando solo un puñado de líneas de señal, como datos en serie y reloj. Ya no es necesaria una tarea importante de diseño de sistemas antiguos, mapeo de E / S y periféricos.
Uso de digital para controlar analógico
Dos interfaces seriales subieron a la parte superior del grupo de prevalencia: I2C y SPI. I2C es un protocolo más complejo que arbitra quién necesita hablar, y es básicamente un significado bidireccional de que el pin de entrada de datos puede funcionar como salida de datos. I2C también incluye circuitos integrados periféricos que tienen direcciones predeterminadas y, debido a que los receptores son direccionables, todos se pueden conectar juntos en el mismo bus I2C. I2C es mucho mejor si no necesita depurarlo, lo que tuve que hacer en los días anteriores a la existencia de protocolos (pero eso fue un poco antes).
Comparación de protocolos SPI e I2C
Considero que SPI, en resumen, Serial Peripheral Interface, es más una actitud que un protocolo estricto, ya que he visto varias especificaciones sobre cómo funcionan los relojes y las selecciones, por lo que generalmente vale la pena verificar los detalles si está diseñado para producción. En el corazón de SPI hay un Chip Select separado para cada dispositivo y una entrada y salida de datos dedicada. Además, las líneas de datos no tienen que preocuparse por ser bidireccionales o tener que lidiar con disputas, por lo que están diseñadas como verdaderas líneas activas de movimiento alto y bajo, mientras que I2C tiene un voltaje pasivo que puede limitar las velocidades máximas. o cargas.
En este caso, elegí el potenciómetro digital que quería y dejé que determinara el Protocolo Serie. En el video, verá los diversos controladores y procesadores que miré y me decidí por el La-Tecnologia Pro Trinket por la sencilla razón de que tiene una calavera de La-Tecnologia.
Baratija La-Tecnologia Pro
Descarga rápida del IDE y pude hablar con el módulo a través del cargador de arranque. Examinar los ejemplos incorporados nos da no solo un proyecto basado en SPI escrito en "C", sino que también uno de los dos ejemplos de SPI es para un potenciómetro digital. Elegí usar el potenciómetro digital MCP4161 y, aunque es una parte diferente al ejemplo de SPI, los cambios necesarios en el código son pequeños. Mirando la hoja de datos, encontramos que escribe un valor de cero primero y luego un segundo valor que indica el valor de resistencia del potenciómetro como un rango hexadecimal de $ 00- $ FF de 256 pasos. El código de muestra se encuentra en un bucle que aumenta ambos bytes, así que cambié el primer byte a $ 00 y dejé el código de incremento solo como útil para nuestra demostración aquí y lo volví a compilar.
Escritura de protocolo SPI en potenciómetro digital
Mi plan original era mostrar la olla digital y el filtro que controlaba en una PCB, pero tuve problemas con la compatibilidad de demasiadas fuentes de alimentación, la tierra e incluso la caída de voltaje del cable USB largo que usé para conducir la demostración de al otro lado de. el cuarto. Usando una pequeña placa de soldadura, fue simple conectar las ollas digitales al bus SPI y luego intercambiarlas en lugar de la olla plegable doble.
Archivador activo, potenciómetro digital y baratija La-Tecnologia Pro
Si no ha visto el video anterior, utilizo un generador de frecuencia de barrido para demostrar los efectos de nuestro filtro ajustable. El generador funcional comienza emitiendo una frecuencia baja y luego se desplaza rápidamente a una frecuencia más alta.
Esto tiene el efecto de que un osciloscopio correctamente activado muestra bajas frecuencias a la izquierda de la pantalla y altas frecuencias a la derecha. La respuesta de frecuencia del filtro a medida que se mueve entre las frecuencias bajas y altas se ve como un movimiento entre los lados izquierdo y derecho de la pantalla, donde la dirección x indica una frecuencia.
Barrido de filtro lento: de izquierda a derecha
Uso de SPI para configurar el corte del filtro de paso bajo
Como nuestra última demostración, los filtros se ven arriba y abajo a lo largo del rango solo que ahora están bajo el control de un programa C simple y no un ajuste manual. Imagínese, si lo desea, un sintetizador analógico, que en lugar de un voltaje de control cuidadosamente calibrado para administrar osciladores, filtros y otros efectos, todos se siguen de cerca sin preocuparse por la linealidad o la temperatura que afecten la precisión del control.
Vista analógica
Finalmente, para demostrar visualmente que un potenciómetro controlado digitalmente copia una resistencia variable, conecté mi viejo medidor Simpson de 260 voltios-ohmios (VOM), que tengo desde que tenía 16 años. Digamos que lo he tenido durante casi 40 años. . Al establecer la resistencia del VOM y recordar que Zero omo es una pendiente a la derecha, los efectos del potenciómetro creciente son fácilmente visibles.
Simpson 260 mostrando potenciómetro digital controlado por SPI
Este fue solo un ejemplo simple de un procesador que domina nuestro proyecto analógico. En estos días, asumo automáticamente que habrá uno o dos buses de control en serie en cualquier proyecto notable.
Thomas Barth dice:
El video es privado: /
Gran tema por cierto. Aunque sé cómo funcionan estas cosas, siempre es bueno volver a aprenderlas, porque a menudo hay pequeños detalles que no conocías antes.
jtl3 dice:
Sin embargo, sería interesante ver una mención de más cosas con puntos también "en acción"; por alguna razón, son una parte que parece ser demasiado aplicada por los principiantes de maneras realmente extrañas, y la gente las trata a menudo como si fueran Potenciómetros “solo” ... por ejemplo, el aislamiento es una preocupación seria dependiendo de dónde se encuentren en el circuito.
Que no dice:
Veo que, cada vez más, la gente publica algo en blogs, luego el video es privado, por lo que nadie puede verlo. suspiro
Thomas Barth dice:
Sucede rápido.
Escribes el artículo y subes el video, pero no lo incluyes (quieres que venga con el artículo), luego publicas la publicación y se ve perfecto para ti. No reconoces que también debes publicar el video.Brian Benchoff dice:
No, es mejor que eso. Youtube, con un hechizo que todavía no entendí, siempre fecha incorrecta de publicación.
"Oh, me gustaría programar esto para mañana a las 7:00."
"Te tengo, 7:00 a.m. del miércoles".
RandyKC dice:
Sería interesante ver cuál es la fecha y hora del servidor de YouTube. Todos asumen que es local, pero quién sabe dónde están los servidores físicos.
estático dice:
Hoy todavía es jueves para mí, pero para gran parte del mundo ya es viernes. Siempre he asumido que la red global usa la “fecha y hora internacional”, y que la fecha y la hora son las mismas en todas las conexiones a Internet. La mayoría de los fanáticos registran los contactos internacionales de esta manera. Con tropas estacionadas en todo el mundo, supongo que el ejército de los EE. UU. Y otros también están usando la fecha internacional.
señal7 dice:
Pido disculpas al autor del artículo anterior, estoy seguro de que está trabajando duro en él, pero cuando me encuentro con un video privado en el medio, dejo de leer en ese momento. Si se soluciona, intentaré hacer un seguimiento, pero en mi opinión hay una falta total de información crítica necesaria para comprender la publicación.
Chorro de agua dice:
Recuerde los largos límites de I2C y SPI. Hay soluciones, pero son más breves de lo que piensas.
RandyKC dice:
Bil,
Me interesaría escuchar su manejo del problema de I2C. Tengo que admitir que fue impredecible para mí. Rediseñé para evitar lidiar con los problemas a veces.John Hull dice:
Soy gerente de producto para dispositivos I2C en NXP. Me encanta depurar los problemas de los clientes. Algunos son chips I2C mal ejecutados (tanto maestro como esclavo). Otros son problemas a nivel de bus (voltajes y capacitancias). Mientras que otras son interacciones extrañas provocadas por la naturaleza análoga del sistema. El 95% de las cosas que encuentro son un simple malentendido de cómo el sistema / las partes deberían funcionar juntos. El último problema que resolví fue causado por líneas de direcciones esclavas conectadas a una FPGA que no las operaba al nivel correcto. El usuario no pudo acceder al esclavo precisamente porque estaba en una dirección diferente a la que esperaba.
RandyKC dice:
Acabo de solicitar un kit de investigación a su empresa hace unos días, veremos a dónde me lleva eso. La mayoría de mis problemas en el pasado han sido la interacción del TWI heredado con un esclavo I2C. Solo busco formas de determinar qué está mal. Tuve mejor suerte con TWI que TWI, pero los límites de velocidad me hicieron repensar ese enfoque más de una vez. (Buena suerte con la fusión).
Chris Yokum dice:
Para cualquier cosa semiprofesional con cualquier bus insignificante (USB, I2C, SPI, básicamente cualquier cosa más allá de GPIO), ahorrará una gran cantidad de tiempo si tiene un analizador de protocolos. Muchos analizadores lógicos pueden descifrar lo que capturan y son productos más específicos que suelen tener una mejor decodificación de programas (TotalPhase Beagle)
Nada mejor que señalar el lugar donde las cosas van mal. ¿El anfitrión no envía lo correcto? Lo verá de inmediato. ¿Un esclavo no responde? Sabrás dónde buscar.
Siempre coloque puntos de prueba (SCL / SDA / GND al mínimo) y luego podrá conectar cualquier cosa para ver las señales, con conexiones eléctricas sólidas y confiables. Puede agregar los títulos .1 ″ más adelante, pero comenzaré con ellos incluidos.
Por lo general, me quedo con el analizador mientras publico un problema, solo porque sé que se cometerán errores y quiero para estar seguro de que no estoy haciendo algo estúpido que me perseguirá en el futuro.
No solo confío en bibliotecas populares o programas de plataforma aleatorios porque sé con qué frecuencia se crean sin esta descripción general. Lo ves incluso en las cosas más populares ... alguien depurando el soporte de Raspberry Pi a la señal CS0 / CS1 diciendo "Hay un problema aquí, no sabemos por qué".
Ben dice:
Bill, gracias por este video. Realmente disfruté viendo.
Encontré un error tipográfico: La línea SPI MOSI está etiquetada como "MOSO" en la imagen de comparación. De hecho, me gusta eso, una línea en la que todos pueden descartar sus pensamientos y nadie necesita escuchar. Necesito esto para las reuniones: DAlex dice:
Recuerde mencionar a Paul en la publicación de Dorkbot sobre "3 pasos para un buen proyecto de bus SPI": http://www.dorkbotpdx.org/blog/paul/better_spi_bus_design_in_3_steps
Natty P dice:
Esta serie es una gran cosa, Bil: ahora estoy tratando de aprender mucho sobre el control digital de analógicos y filtros, especialmente para el diseño de sintetizadores, y este es exactamente el tipo de cosas que necesito saber. ¡Gracias!
Erin Tomson dice:
Me preguntaba acerca de los potenciómetros digitales ... tal vez Bill o alguien más aquí pueda responder una pregunta por mí. ¿Cómo cambia realmente una olla digital su resistencia? Supuestamente es una especie de escalera de resistencia, pero ¿cómo funciona el elemento de conmutación? Si hubiera un interruptor de semiconductor, ¿no habría una caída de voltaje? ¡Gracias por adelantado!
estático dice:
Solo soy un comedor. Lo trataría desde el punto, se trata de emular una resistencia, una función de una resistencia es controlar la cantidad de corriente que fluye en un circuito. Un transistor con modulación de ancho de pulso podría hacer eso. Dos transistores podrían copiar un potenciómetro. De nuevo, también podría estar lejos de la base.
Erin Tomson dice:
Pero entonces la corriente de emisión base-> necesitaría fluir para encender el transistor, y habría una caída de voltaje independientemente de la corriente que fluya. ¿No estropearía eso los circuitos que suponen que se comporta como una resistencia?
Miroslav dice:
Una olla digital es en realidad una escalera de resistencia iluminada MOSFET. El mismo principio se utiliza en DAC (convertidores de digital a analógico).
Una propiedad de un MOSFET es completamente diferente del transistor bipolar (PNP o NPN): un canal de drenaje / fuente actúa como una resistencia, por lo que una caída de voltaje es proporcional a la corriente que fluye a través de él. Si (como es realmente el caso) esta resistencia es mucho menor que las resistencias en la escalera, entonces el "error numérico" es muy pequeño.
Solo como curiosidad, existen MOSFET con resistencia Drain / Source (RD) en mOhms de un solo dígito (1/1000 de Ohm), pero estos suelen ser MOSFET potentes.Erin Tomson dice:
Eso tiene sentido. ¡Gracias, Miroslav!
Miroslav dice:
PWM no se puede utilizar aquí - PWM funciona como un "potenciómetro" sólo cuando se aplica a un dispositivo "lento". Por ejemplo, se puede atenuar la luz (blanca o LED) usando PWM, pero solo se inserta con lentas "deficiencias" correspondientes del ojo humano.
Si usa PWM en un LED y mide el efecto ("sensor de luz" conectado a la amplitud), verá una luz encendida y apagada, y no verá un cambio constante en el nivel de luz cuando su cerebro haya registrado.
En otras palabras, solo un valor "promedio" de cambios de señal controlados por PWM, los valores reales son cero o máximos, y esto no funcionará para (la mayoría) de las implementaciones de potenciómetros digitales.
Un filtro digital utilizado aquí "calcula" a un valor R constante establecido por el potenciómetro, no al valor promedio.
Aquí hay un ejemplo:
Quieres un filtro "centrado" a 1 kHz. Supongamos que requiere un valor R de 10 kOhmios. Utiliza PWM, que “copia” 0 ohmios (cuando está encendido) y 100 kOhmios cuando está apagado. Con PWM proporcionando el 90% en todo el estado (por ejemplo, 9 usec, 1 usec de descuento), podría pensar que en promedio equivale a 10kOhm, pero para un filtro sigue siendo 9 usec con 100k y 1 usec con 0 Ohm.
Incluso si su PWM opera a una frecuencia mucho más alta que su frecuencia central, no funcionará, pero la explicación matemática se vuelve mucho más complicada porque incluye una banda ancha de los componentes activos, más la teoría de la muestra, más una respuesta no lineal, mucho más. más.
Por otro lado, cuando usa PWM en un LED y hace que PWM cambie el estado al menos 50 veces por segundo (preferiblemente mucho más), su ojo y cerebro promedian niveles de luz altos y bajos dependiendo de su duración.
Si usa una bombilla de luz blanca, esta integración (creación del valor promedio) ocurre debido a la respuesta lenta del filamento: no puede enfriarse y calentarse lo suficientemente rápido como para encenderse y apagarse por completo después del PWM.
Espero que esto ayude 🙂
el nuevo usuario de la-tecnologia dice:
Odio decir esto, pero Bill me hace sentir como si estuviera a punto de ser asesinado / corneado / secuestrado cada vez que lo veo mirándome desde una pancarta. Por favor, cambia esa imagen, da miedo. Cuando se adjunta a un título demasiado presuntuoso / amenazante como "se supone que tenemos el control", simplemente no quiero hacer clic en él.
Dan dice:
Estoy bastante seguro de que I2C es un circuito interintegrado.