De nada, gracias a vosotros por las aportaciones.
Popopo escribió: ↑18 Feb 2022, 00:52Tengo que dedicar algo más de tiempo a ver los esquemas, pero ... me parece que en el módulo de control has puesto resistencias de 10K y 20K en vez de las que me habías indicado en otro post de 1K y 2K. ¿qué valores son los adecuados?
Los adecuados son los que guarden una relación R-2R, es decir, si N es el número de bits, N-1 de un valor, N+1 del doble. Como ya habíamos hablado escogeremos R o 2R en función de otras resistencias del tester, así no hay que comprar de varios tipos.
A este respecto, la parte del circuito de RESET que no afecta a la señal DTR es opcional, está en el esquema por si más adelante (aunque sea poco probable) se decide prescindir del Nano y montar directamente un ATMega328P-AU DIP-28 en su lugar que solo añade como componentes, el micro, un zócalo DIP-28, 2 condensadores de 22pF y un oscilador pasivo de 16MHz. Pero como esta parte tiene un resistencia de 10kΩ, he tomado R=10kΩ y 2R=20kΩ para el DAC que no afectará a la botonera.
Popopo escribió: ↑18 Feb 2022, 00:52si pones muy altas... el margen se reduce mucho entre límites de tensiones a distinguir por el puerto analógico,
Para nuestros 4 bits el convertidor digital-analógico (DAC) R-2R va a cuantizar el rango 0-1023 (0-5V) en 4 regiones muy definidas (0, 2.5, 3.0, 3.3 y 3.6V), cuando el convertidor analógico-digital (ADC) del Nano lea el valor que corresponde a cada microinterruptor va a devolver el mismo (~0, 512, 614, 682 y 731) sean las resistencias de 1kΩ/2kΩ o de 10kΩ/20kΩ pero atención porque cuanto más bajo sea el valor de R el circuito tendrá mayor consumo. Ejemplo en el
simulador Falstad que confirma tanto los valores teóricos como experimentales (tanto en tensión medida como en el valor leído en el Nano). Si finalmente no son necesarias las resistencias de 10kΩ, nos podemos ir tranquilamente a 100kΩ/200kΩ ó 1MΩ/2MΩ lo que reduciría el consumo de la botonera al rango de los nA y, como efecto colateral, haría los valores leídos más sensibles/inestables (digamos ±20) aunque no es un problema porque están bien separados. Ejemplo en el
simulador Falstad.
Como véis hay una coincidencia exacta con los valores teóricos, si calculamos:
donde V es la tensión medida en la salida del DAC, 1023 es el valor máximo del rango del ADC del Nano (0-1023) y 5 son los +5V:
Botón | Voltaje | Valor |
#1 (D0) OK | 3.571V | 731 |
#2 (D1) BACK | 3.333V | 682 |
#3 (D2) DOWN | 3.000V | 614 |
#4 (D3) UP | 2.500V | 512 |
- | 0.000V | 0 |
Este es el código para probarlo en el Arduino Nano/Uno:
Código: Seleccionar todo
// Test DAC microswitches/push button switches
// Set input pin
int INPUT_PIN = A7;
void setup()
{
// Init serial port
Serial.begin(9600);
// Wait for serial port
while (!Serial);
// Set input pin to input mode
pinMode(INPUT_PIN, INPUT);
}
void loop(){
// Read input pin
int iInput = analogRead(INPUT_PIN);
// Print value
Serial.println(iInput);
// Wait a little bit! We don't need to overwhelm the serial port
delay(50);
}
veréis que para leer los botones se usa el pin A7 que junto a A6 son los únicos puramente analógicos y en un Nano convencional no pueden funcionar como digitales ni tienen salida (output) (ahí nos robaron 2 pines de los 22 que públicamente se presume).
Popopo escribió: ↑18 Feb 2022, 00:52Los controles, pienso que si son microswichets cabrían en la placa los 4 que indicas o suben mucho el tamaño?
La tengo montada en una breadboard y ocupan (4x6)x6mm. es decir, aproximadamente 24x6mm sin contar con el espacio de la separación entre uno y otro. Si se quieren poner en la placa principal se puede hacer sin problema, espacio hay; si se quiere montar en una placa hija también (esta última opción facilita conectar cualquier otro módulo de entrada).
Otra de las ventajas de este sistema es que solo hacen falta el microinterruptor y dos resistencias más para añadir un nuevo botón.
Popopo escribió: ↑18 Feb 2022, 00:52mira... mañana me hago un borrador en papel con el perfil de los componentes que sabemos seguro van, dejando espacio para la pantalla en alguna zona.
Aquí va la lista de componentes, 67 en total en orden provisional de montaje para
este esquema:
Cantidad | Referencia | Valor |
4 | R1,R45,R46,R47 | 10kΩ 1/4W 1% |
5 | R41,R42,R43,R44,R48 | 20kΩ 1/4W 1% |
19 | F01,F02,F03,F04,F05,F06,F07,F08,F09,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19 | PPTC 6V 30mA |
1 | D32 | 1N4148 |
19 | Z01,Z02,Z03,Z04,Z05,Z06,Z07,Z08,Z09,Z10,Z11,Z12,Z13,Z14,Z15,Z16,Z17,Z18,Z19 | 1N4733A |
2 | C1,C34 | 100nF 25V |
1 | C33 | 10µF 25V |
1 | C35 | 47µF 25V |
1 | U32 | LMC7660 |
1 | J1 | I2C/OUTPUT Pines macho 1x05 2.54mm |
1 | J2 | INPUT Pines macho 1x03 2.54mm |
1 | J3 | POWER_RAIL Pines macho 1x03 2.54mm |
1 | J4 | POWER Pines hembra 2x10 2.54mm |
1 | J51 | OUTPUT Pines macho 1x05 2.54mm |
2 | J5 | Pines redondeados hembra 1x15 (zócalo Nano) 2.54mm |
1 | SW1 | RESET (momentáneo) |
4 | SW41,SW42,SW43,SW44 | UP,DOWN,BACK,OK (push button switches SPDT) |
1 | U2 | ZIF socket 20pos |
1 | U1 | Arduino Nano |
Popopo escribió: ↑18 Feb 2022, 00:52Estoy confuso con lo del J1 para módulo de salida o programar... ¿dónde está la necesidad?
Es lógico que sea confuso porque no he sido muy explícito en ese sentido. Ese conector está ahí para los módulos de salida (LEDs, pantallas,...) pero está curiosamente organizado con la funcionalidad de un conector I2C estandarizado que proporciona un método de comunicación directa con el microprocesador ATMega328. Usarlo o no es
opcional, el operador siempre puede optar por programar el Nano mediante su conversor USB-TTL integrado por el conector USB Mini.
Añadiría también que como D0 y D1 tienen sus correspondientes LEDs en el Nano, posiblemente sean una opción como rudimentario módulo de salida.