pulso arduino a potencia máxima del transistor

Hola quiero que me confirmen que lo que estoy haciendo no va a freír mi Arduino Mega.

El boceto que estoy usando para enviar un pulso en el pin 8 a un 2n3055 que está cambiando 12 voltios es este:

int pulse = 8;
int sensorValue;

void setup() {
  pinMode(pulse, OUTPUT);
}

void loop() {
  int sensorValue = analogRead(A0);
  map(sensorValue, 0, 1023, 1, 2000);
  digitalWrite(pulse, HIGH);   
  delay(sensorValue);              
  digitalWrite(pulse, LOW);    
  delay(sensorValue);            
}

Estoy usando un potenciómetro entre Arduino 5v y tierra con el limpiaparabrisas yendo al pin A0.

Bosquejo

esquemático

simular este circuito : esquema creado con CircuitLab

Quiero saber:

  1. ¿Podría alimentar esto directamente desde mi USB en lugar de alimentar el transistor Y el Arduino desde la batería fuente?

  2. Si ambos tienen que ser alimentados por la batería, ¿necesito conectar el emisor a la tierra del Arduino Y la batería para evitar que toda la corriente fluya a través de la tierra del Arduino y obtener un pulso limpio o simplemente conecto el emisor a el negativo de la batería y la señal estarán bien.

  3. En cualquier configuración que sea mejor, ¿cuál es el mejor lugar para colocar un medidor analógico que tenga una capacidad nominal de hasta 3 amperios para que pueda ver el consumo total de energía de la placa y el circuito del transistor?

  4. Por último, estoy usando esto para pulsar la bobina lateral de alto voltaje en un transformador de microondas, por lo que tiene mucha impedancia y cuando lo pulsa consume aproximadamente 300 mA como máximo, así que podría alimentar el Arduino a través de USB y el transistor de la batería para que yo puede reprogramar sobre la marcha y tener un pulso establecido en lugar de usar la olla. (como en escribir el código para un cierto retraso y cargarlo mientras se ejecuta)

Esta pregunta es confusa y se beneficiaría de un diagrama de circuito; ¿La batería es de 12 V y dónde está conectada?
Si bien algunos de nosotros podemos entender cuál es su configuración, a partir de su descripción verbal, una imagen vale más que mil palabras. Considere agregar un esquema para lo que está intentando: dado que aún no tiene suficiente reputación, cree uno y cárguelo como una imagen en cualquier sitio público de alojamiento de imágenes, luego deje el enlace aquí como un comentario a su propia pregunta. Alguien con privilegios de edición lo editará en la pregunta.
+1 en lo que dijo @AnindoGhosh, pero también puede editar en un enlace a su esquema. Mejor aún, use Ctrl+M y agregue un diagrama de Circuit Lab, no necesita ningún representante para eso: debería arreglarse ahora.
¿Por qué no usar PWM? Es tan fácil como hacer un analogWrite( pulse , dutyCycle );, donde dutyCycle = ( 255 * sensorValue ) / 1024;.
No estoy haciendo pwm porque quiero una frecuencia variable con un ciclo de trabajo fijo del 50 por ciento. Variar los tiempos de retardo de encendido y apagado con un potenciómetro es lo que me hace bien. Si quiero variar el ciclo de trabajo, podría agregar un segundo potenciómetro y usarlo como la variable de retardo de tiempo de apagado.
Quiero mencionar dos cosas: 1) Debería comentar su código para que las personas (incluido usted mismo) puedan entender fácilmente lo que está tratando de hacer. 2) Puede crear fácilmente un PWM de frecuencia variable: presione un botón para aumentar/disminuir la frecuencia PWM, ajustando el valor de comparación en consecuencia para mantener el ciclo de trabajo donde lo desee. También podría usar un potenciómetro y el ADC, pero una solución digital es más confiable. Esto se hace fácilmente en C usando los nombres de registro AVR reales, pero no sé cómo hacerlo en arduinés.
Configurar la frecuencia PWM en Arduino es simple con la biblioteca de frecuencias PWM .
Realmente no necesito una forma diferente de hacerlo porque la forma en que está escrito el código hace exactamente lo que quiero, pero gracias por el aporte. el código cambia la demora para el tiempo de encendido y apagado por igual mientras es variable, lo que me da un pulso de ciclo de trabajo de frecuencia variable del 50 por ciento, que es lo que quiero.

Respuestas (2)

valor del sensor int = 1;

¿Por qué estás inicializando esta variable a 1, cuando luego se sobrescribe en la primera línea de loop()?

retraso (valor del sensor);

¿Es intencional tener un retraso variable de n milisegundos, donde n es el valor leído desde el puerto A0 cada vez? Además, ¿se requiere ese retraso dos veces, una vez después de configurar el pin de salida en alto, una vez después de configurarlo en bajo?


Necesitará una resistencia base entre pulse(Pin 8) y la base del 2n3055, con un valor calculado según la cantidad de corriente que pretenda permitir a través del colector. Si está utilizando el transistor como interruptor, se sugiere un mínimo de alrededor de 220 ohmios, para mantener la corriente del pulsepin por debajo de los 25 mA, dentro de los límites seguros para cada pin: el valor máximo absoluto para cada pin es de 40 mA. .

  1. Puede alimentar el Arduino desde USB y el transistor desde la batería, siempre que la tierra del Arduino esté conectada al polo negativo de la batería.
  2. De cualquier manera, necesitará la tierra de Arduino conectada al negativo de la batería.
  3. Póngalo en serie con la bobina que está manejando, si desea medir la corriente de la bobina (el colector del transistor). Si desea medir la combinación, tanto Arduino como el transistor deben recibir alimentación de la batería, y simplemente agregue el medidor en serie con el polo positivo o negativo de la batería, antes de cualquier conexión a Arduino o transistor. es decir, toda la corriente a la batería debe pasar por el medidor.
  4. Sí, ver el punto 1.
copié y pegué mal, es solo (int sensorValue;) en mi boceto, no estoy seguro de cómo lo cambié ... y gracias por la información muy útil. Te lo agradezco. También estoy variando los tiempos de retraso para mantener el ciclo de trabajo en 50 para que el pulso esté apagado mientras esté encendido. funciona bien en mi visor y durante unos segundos tuve las agallas de enchufarlo todo antes de recibir la confirmación. y tengo una resistencia base que no escribí allí.
i1279.photobucket.com/albums/y524/BJmalone/… creo que lo tengo todo ahí... tuve tiempo pero lo hice con pintura, lo siento si no está claro
@bradley incorporado. Además, el comentario del enlace esquemático debería haber estado en la pregunta, no en la respuesta. Por último, intente usar el editor de esquemas incorporado presionando Ctrl-M mientras edita su pregunta.
@jippie No, puedes usar variables con delay() y funciona. El optimizador reconoce si es una constante o no, y si es una constante, la trata como un valor estático.
Debe ser nuevo (> v0022). ¿Te perdiste el diodo flyback?
De hecho, estoy aprovechando el flyback a través de un diodo en un condensador conectado a través de la bobina. Ese es el principal logro de este proyecto: ver cuánta energía de retorno del transformador pondrá en una tapa mientras se registra la energía utilizada para crear un pulso de 12 voltios en la bobina. cuando omito el consumo de corriente del arduino, la bobina solo consume 100mAMPS a 181hz y crea un retorno de 292 voltios con el que cargo las tapas. Estoy probando una teoría de energía libre basada en un circuito similar a un motor bedini de estado sólido. cuando tenga más tiempo esta noche, usaré el editor de circuitos correcto y agregaré todo lo que se perdió

1) Depende del sorteo actual. El USB tiene un fusible PTC de 500 mA. Si su carga no excede eso, entonces está bien.

2) La corriente encontrará el camino de menor resistencia, así que está bien. Usaría un optoaislador para separar los dos dispositivos. Siempre que cambie una gran carga de corriente, se inducirá mucho ruido en su sistema.

3) Simplemente rompa el circuito para medir el consumo de corriente. Prácticamente entre el terminal positivo de la batería y la carga.

4) Recomendaría cambiar a un MOSFET en lugar de usar el transistor NPN. Si realiza el cálculo de disipación de energía para los dos dispositivos, tiene mucho sentido: MOSFET: P = (I^2)(Ron) = (300mA^2)*(mOhms) => poco calor NPN: P = ( I*V) = (300mA)*(0.7V) = 0.21W

No desea utilizar PWM porque analogWrite() está fijado a 490 Hz.