added dac

This commit is contained in:
Ayzen
2026-02-18 16:04:20 +03:00
parent 8ca2fe39d0
commit 12cf9d6716
7 changed files with 92 additions and 1 deletions

View File

@ -27,10 +27,13 @@ INITIAL_CURRENT_2 = 35 # 64.0879 max # Set initial current for Laser 2, in mA
AD9833_FREQ_DEFAULT_KHZ = 125.0
AD9833_MCLK_DEFAULT_MHZ = 20.0
DS1809_MAX_STEP = 63
DS1809_DEFAULT_STEP = 0
DS1809_DEFAULT_STEP = 3
DS1809_INIT_HOME_PULSES = 64
DS1809_INIT_PULSE_MS = 2
DS1809_INIT_STARTUP_DELAY_S = 0.35
STM32_DAC_VREF = 2.5
STM32_DAC_MAX_CODE = 4095
PA4_DAC_DEFAULT_VOLT = 0.0
#### ---- Functions
@ -94,6 +97,16 @@ def format_ds1809_status(step):
return f"{step}/{DS1809_MAX_STEP} шагов"
def voltage_to_dac_code(voltage_v):
if voltage_v is None:
return 0
if voltage_v < 0.0:
voltage_v = 0.0
if voltage_v > STM32_DAC_VREF:
voltage_v = STM32_DAC_VREF
return int(round((voltage_v / STM32_DAC_VREF) * STM32_DAC_MAX_CODE))
def initialize_ds1809_position(prt, default_step):
default_step = clamp_int(int(default_step), 0, DS1809_MAX_STEP)
@ -154,6 +167,8 @@ def set_initial_params():
params['Ad9833Triangle'] = True
params['DS1809Step'] = DS1809_DEFAULT_STEP
params['DS1809Status'] = format_ds1809_status(DS1809_DEFAULT_STEP)
params['PA4DacVolt'] = str(PA4_DAC_DEFAULT_VOLT)
params['PA4DacStatus'] = f"0 / {STM32_DAC_MAX_CODE}"
return params
def update_data_lists():
@ -570,6 +585,21 @@ if __name__ == "__main__":
params['DS1809Step'] = ds1809_step
params['DS1809Status'] = format_ds1809_status(ds1809_step)
window['-DS1809Status-'].update(params['DS1809Status'])
elif event == '-SetPA4Dac-':
voltage_v = parse_optional_float(values.get('-PA4DacVolt-'))
if voltage_v is None:
print('Invalid PA4 DAC voltage value.')
else:
if voltage_v < 0.0:
voltage_v = 0.0
if voltage_v > STM32_DAC_VREF:
voltage_v = STM32_DAC_VREF
dac_code = voltage_to_dac_code(voltage_v)
dev.set_stm32_dac(prt, dac_code=dac_code, enable=True)
params['PA4DacVolt'] = f"{voltage_v:.3f}"
params['PA4DacStatus'] = f"{dac_code} / {STM32_DAC_MAX_CODE}"
window['-PA4DacVolt-'].update(params['PA4DacVolt'])
window['-PA4DacStatus-'].update(params['PA4DacStatus'])
elif event == '-StopCycle-':
window['-StopCycle-'].update(disabled = True)
current_and_temperature_settings_available = True