100%
butterfly-soa-driver driver view
Description

Imported from GitHub: mircotoll01/butterfly-SOA-driver · commit deb5af6 · license MIT

Description

Butterfly SOA Driver

README

Overview

This is an experimental slave module used to drive a optical devices with a butterfly package and integrated TEC. The driver can be operated from the header connector on the side. The board was initially thought as a Laser Diode driver encased in butterfly packages, which usually integrate both the LD and a Peltier cell. Since there is no standard pinouts in butterfly-type packages, this board routes all its power outputs and inputs to a row of headers, and all butterfly pins are routed to open headers as well, so that it is possible to route different parts of the board to different butterfly pins, whose position is numbered and indicated on silkscreen.

Pinout

PINUSAGEINFO
13V3Logic power supply, mandatory for the DAC that sets the optical device voltage
2SCLI2C clock pin for the DAC
3SDAI2C data pin for the DAC
4$\overline{LDAC}$Enable DAC register write mode
5$RDY/\overline{BSY}$This pin gives information on the DAC status
6GND
7TEC_ENEnabling input for TEC
8LD_MODLT3743's PWM input, when this signal is set to low all switching is disabled. Pull high if you don't plan to use it
9CTRL_SELLT3743's switch for output voltage selection. The board has a double output capacitor topology that can be used to switch between two voltages. Useful if there is the need to keep an LD under the lasing threshold and periodically switch to a higher voltage.
10ILD_MONoptical device current monitor
11LD_ENLT3743's enable pin
12UNDRTMP_ALMSets if the temperature gets lower than a certain setpoint
13OVRTMP_ALMSets if the temperature gets higher than a certain setpoint
14ITEC_MONTEC current monitor

Usage

The board was tested with a Basys3 as a master module and the firmware is available in this repository. If a basys3 is used to operate this driver connect its output pins in the following way (declared in the bays3's constraint file):

JA1 → OVRTMP_ALM
JA2 → UNDRTMP_ALM
JA3 → LD_EN
JA4 → CTRL_SEL
JA5 → GND
JA6 → 3V3
JA8 → TEC_EN
JA9 → SDA
JA10 → SCL
JB1 → $\overline{LDAC}$

To control the board with the Basys3 simply connect these pins and connect the board to the computer via USB. The given firmware will provide a rudimental serial interface that will control the state of the driver. A simple python script can do the trick. the following one will work on linux:

import serial

ser = serial.Serial('/dev/ttyUSB1', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_TWO,timeout=10)

while True:
    packet = bytearray(input("Waiting for a command: ").encode("ascii") + b'\n')

    ser.write(packet)

    for i in packet:
        print(ser.read())
    

Update

Now this repo provides a python script that gives a console to the user to send commands and see current parameters. The requirements for the python script are the following:

  • curses
  • threading
  • pyserial
  • time
  • re

Command list

COMMANDINFO
OFFPulls LD_EN to low, disables all switching functions. Any other command will set LD_EN back to high
CCCActivates the part of the circuit that supplies costant current to the optical component
TECActivates the Thermo-Electric Controller
PWMSets PWM mode with a certain duty cycle, set CTLL voltage first to operate the optical device in this mode
SETSets the selected register of the DAC to a set value
DBLSets double output voltage mode, the low and high thresholds have to be set first

The SET command will accept the following attributes:

ATTRIBUTEINFO
CTLLModifies the lower voltage threshold CTRL_L. Note: this pin is internally clamped to 1.5V by the LT3743
CTLHModifies the higher voltage threshold CTRL_H. Note: this pin is internally clamped to 1.5V by the LT3743
TSETSets the voltage setpoint for the TEC's PID controller
MAXVSets the TEC's maximum operating voltage

Syntax

Update Note

The commands are not case sensitive anymore

Examples

Turn on a SOA or an LD:

CCC ON
PWM 100

Enable PWM modulation

CCC ON
PWM XXX

Enable double threshold modulation

CCC ON
DBL XXX
Comments
Sign in to comment

No comments yet. Be the first to ask about this board.