from machine import Pin, ADC, Timer
import time
# Configuración del potenciómetro y pines GPIO
pot = ADC(28) # Pin del potenciómetro en Raspberry Pi Pico (GP28)
tiristor1 = Pin(25, Pin.OUT) # GPIO para disparo del tiristor 1
tiristor2 = Pin(26, Pin.OUT) # GPIO para disparo del tiristor 2
# Frecuencia de red eléctrica
FREQ_RED = 50 # Cambia a 60 si tu región usa 60 Hz
PERIODO_RED = 1 / (2 * FREQ_RED) # Período de semionda
# Función de sincronización y disparo de tiristores
def sincronizacion(t):
# Leer valor del potenciómetro
valor_pot = pot.read_u16() # Rango de 0 a 65535 en Raspberry Pi Pico
angulo_disparo = (valor_pot / 65535) * 180 # Mapeo a grados (0-180°)
# Convertir ángulo a tiempo de disparo
tiempo_disparo = (angulo_disparo / 180) * PERIODO_RED
# Disparo del tiristor 1
tiristor1.on()
time.sleep_us(int(tiempo_disparo * 1e6)) # Temporización en microsegundos
tiristor1.off()
# Esperar hasta el siguiente semiciclo
time.sleep(PERIODO_RED - tiempo_disparo)
# Disparo del tiristor 2
tiristor2.on()
time.sleep_us(int(tiempo_disparo * 1e6))
tiristor2.off()
# Configurar el temporizador para sincronización
tim = Timer()
tim.init(period=int(PERIODO_RED * 1000), mode=Timer.PERIODIC, callback=sincronizacion)
try:
while True:
pass # El temporizador maneja la sincronización
except KeyboardInterrupt:
tim.deinit() # Detener el temporizador
tiristor1.off()
tiristor2.off()