Soliciting ideas for sync/trigger schemes for an open-source high-speed LED driver

classic Classic list List threaded Threaded
6 messages Options
Benjamin Smith Benjamin Smith
Reply | Threaded
Open this post in threaded view
|

Soliciting ideas for sync/trigger schemes for an open-source high-speed LED driver

*****
To join, leave or search the confocal microscopy listserv, go to:
http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
Post images on http://www.imgur.com and include the link in your posting.
*****

Hey Microscopists,

*TL;DR:*
I am in the process of writing a graphical user interface (GUI) for an
open-source high speed LED driver I've designed and built, and was hoping
to poll any listserv members who think they may have a need for such a
driver, and get feedback on what sort of uses and input/output
configurations they envision requiring in their research to make sure the
software can accommodate as many potential uses as possible with the goal
that people won't have to write/optimize their own code to use the driver.


Images of LED driver I/Os:
Front Panel -  https://goo.gl/9Lwpq9
Back Panel -  https://goo.gl/JJH8kX
The GUI (Extremely alpha version) -  https://goo.gl/VEWXEp

*The background:*
I'm currently working on a high-speed LED driver (0 to 20A max and DC to >1
MHz 0-100% modulation) that works as an Arduino shield, which I am hoping
to release soon as a fully open-source project geared towards anyone being
able to make their own high performance LED drivers.  Specifically, the
driver utilizes two of the Arduino analog pins (one diode protected) as
input triggers/syncs and two digital pins as I/O triggers/syncs.  The
hardware is up and running and has been tested with a 500 mA max current
configuration on a re-wired Thorlabs LED (60 cm total wire length: see -
https://goo.gl/tbnfSZ) and the LED current settled in just 400 ns when
modulated with a 0-500 mA square wave with minimal overshoot (see -
https://goo.gl/CcYh2o NOTE: 1V = 100mA, top trace is input, bottom trace is
LED ouput).  Once the software is finished I will be building and testing a
20A version, then writing up a full characterization, and a build/user
manual.

*My question for the listserv:*
Right now I am working on a platform independent (i.e. Java) user interface
so people won't have to worry about writing/optimizing their own Arduino
code (at least not for core tasks), and would like to get feedback on any
possible types of sync schemes/applications people think they would like to
see implemented, as this is the point in the project where they would be
easiest to incorporate.  Therefore, if anyone thinks they may want to use
this LED driver in their own research, then I was wondering if you could
get in touch with me ASAP and let me know what kind of inputs/triggers and
outputs you envision you would need or want, so I can make the GUI and
Arduino code as versatile as possible.

*More information on the driver input signals and I/O pins:*
Specifically, the LED driver uses two Arduino analog pins and two digital
pins for I/O syncs/triggers.  To drive the LED itself, the driver can use
an external analog signal or an on-board 8-bit digital potentiometer as a
high-speed arbitrary wave generator (AWG) (up to 1 MHz sample rate), both
of which pass through an analog switch for an additional DC to 8 MHz square
wave modulation.

The Arduino analog pins can sample a 0-5V signal at up to 200 kHz with
10-bit precision, and the digital pins can be used as an input or output at
up to 16 MHz, although any additional logic/checks in the Arduino
programming will reduce these sample rates.

*Sample of I/O schemes for our own research:*
For our own research needs I will be implementing the following
configurations:
1) Confocal line-clock sync - High speed digital input to trigger AWG
output with adjustable µs delay
2) Confocal fast-mirror sync - High speed analog input to trigger AWG
output with adjustable µs delay
3) Confocal mirror sync with shutter - Analog sync that starts only when
shutter (digital) is open
4) PWM fan control for high current LEDs - Adjust speed of LED fan based on
LED temp
5) Continuous DC to 8 MHz PWM on analog switch for FLIM and PLIM.

Thank you in advance for your feedback and ideas,
   Ben Smith

P.S.
A huge thanks goes out to the authors of JSerialComm for releasing, and
more importantly continuing to maintain, a platform independent open-source
serial communication library.  The GUI side of things would be
dead-in-the-water without it.

--
Benjamin E. Smith, Ph. D.
Imaging Specialist, Vision Science
University of California, Berkeley
195 Life Sciences Addition
Berkeley, CA  94720-3200
Tel  (510) 642-9712
Fax (510) 643-6791
e-mail: [hidden email]
http://vision.berkeley.edu/?page_id=5635 <http://vision.berkeley.edu/>
Ian Dobbie Ian Dobbie
Reply | Threaded
Open this post in threaded view
|

Re: Soliciting ideas for sync/trigger schemes for an open-source high-speed LED driver

*****
To join, leave or search the confocal microscopy listserv, go to:
http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
Post images on http://www.imgur.com and include the link in your posting.
*****

Hi Ben

Sounds really interesting. We do our hardware control from python so would it be possible to release either python bindings or the exact specs for the communication fro talking to the Arduino so we could talk to it in python.

I assume that you are doing serial to the Arduino given your statement at the end about a java serial library. If so it is probably easiest just to fully document the communication protocol used.

Thanks.

Ian

Sent from my iPhone

> On 11 Sep 2018, at 02:24, Benjamin E Smith <[hidden email]> wrote:
>
> *****
> To join, leave or search the confocal microscopy listserv, go to:
> http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
> Post images on http://www.imgur.com and include the link in your posting.
> *****
>
> Hey Microscopists,
>
> *TL;DR:*
> I am in the process of writing a graphical user interface (GUI) for an
> open-source high speed LED driver I've designed and built, and was hoping
> to poll any listserv members who think they may have a need for such a
> driver, and get feedback on what sort of uses and input/output
> configurations they envision requiring in their research to make sure the
> software can accommodate as many potential uses as possible with the goal
> that people won't have to write/optimize their own code to use the driver.
>
>
> Images of LED driver I/Os:
> Front Panel -  https://goo.gl/9Lwpq9
> Back Panel -  https://goo.gl/JJH8kX
> The GUI (Extremely alpha version) -  https://goo.gl/VEWXEp
>
> *The background:*
> I'm currently working on a high-speed LED driver (0 to 20A max and DC to >1
> MHz 0-100% modulation) that works as an Arduino shield, which I am hoping
> to release soon as a fully open-source project geared towards anyone being
> able to make their own high performance LED drivers.  Specifically, the
> driver utilizes two of the Arduino analog pins (one diode protected) as
> input triggers/syncs and two digital pins as I/O triggers/syncs.  The
> hardware is up and running and has been tested with a 500 mA max current
> configuration on a re-wired Thorlabs LED (60 cm total wire length: see -
> https://goo.gl/tbnfSZ) and the LED current settled in just 400 ns when
> modulated with a 0-500 mA square wave with minimal overshoot (see -
> https://goo.gl/CcYh2o NOTE: 1V = 100mA, top trace is input, bottom trace is
> LED ouput).  Once the software is finished I will be building and testing a
> 20A version, then writing up a full characterization, and a build/user
> manual.
>
> *My question for the listserv:*
> Right now I am working on a platform independent (i.e. Java) user interface
> so people won't have to worry about writing/optimizing their own Arduino
> code (at least not for core tasks), and would like to get feedback on any
> possible types of sync schemes/applications people think they would like to
> see implemented, as this is the point in the project where they would be
> easiest to incorporate.  Therefore, if anyone thinks they may want to use
> this LED driver in their own research, then I was wondering if you could
> get in touch with me ASAP and let me know what kind of inputs/triggers and
> outputs you envision you would need or want, so I can make the GUI and
> Arduino code as versatile as possible.
>
> *More information on the driver input signals and I/O pins:*
> Specifically, the LED driver uses two Arduino analog pins and two digital
> pins for I/O syncs/triggers.  To drive the LED itself, the driver can use
> an external analog signal or an on-board 8-bit digital potentiometer as a
> high-speed arbitrary wave generator (AWG) (up to 1 MHz sample rate), both
> of which pass through an analog switch for an additional DC to 8 MHz square
> wave modulation.
>
> The Arduino analog pins can sample a 0-5V signal at up to 200 kHz with
> 10-bit precision, and the digital pins can be used as an input or output at
> up to 16 MHz, although any additional logic/checks in the Arduino
> programming will reduce these sample rates.
>
> *Sample of I/O schemes for our own research:*
> For our own research needs I will be implementing the following
> configurations:
> 1) Confocal line-clock sync - High speed digital input to trigger AWG
> output with adjustable µs delay
> 2) Confocal fast-mirror sync - High speed analog input to trigger AWG
> output with adjustable µs delay
> 3) Confocal mirror sync with shutter - Analog sync that starts only when
> shutter (digital) is open
> 4) PWM fan control for high current LEDs - Adjust speed of LED fan based on
> LED temp
> 5) Continuous DC to 8 MHz PWM on analog switch for FLIM and PLIM.
>
> Thank you in advance for your feedback and ideas,
>   Ben Smith
>
> P.S.
> A huge thanks goes out to the authors of JSerialComm for releasing, and
> more importantly continuing to maintain, a platform independent open-source
> serial communication library.  The GUI side of things would be
> dead-in-the-water without it.
>
> --
> Benjamin E. Smith, Ph. D.
> Imaging Specialist, Vision Science
> University of California, Berkeley
> 195 Life Sciences Addition
> Berkeley, CA  94720-3200
> Tel  (510) 642-9712
> Fax (510) 643-6791
> e-mail: [hidden email]
> http://vision.berkeley.edu/?page_id=5635 <http://vision.berkeley.edu/>
Benjamin Smith Benjamin Smith
Reply | Threaded
Open this post in threaded view
|

Re: Soliciting ideas for sync/trigger schemes for an open-source high-speed LED driver

*****
To join, leave or search the confocal microscopy listserv, go to:
http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
Post images on http://www.imgur.com and include the link in your posting.
*****

Hey Ian,
    That is a great idea and is absolutely doable.  Like you said, probably the best way would be to add a serial communication section to the user manual describing the packet structure, a list of possible commands, and the startup handshake sequence (much like in a datasheet).  If people would like, I could also post a link to their implementations in the main repository, so that other people can use them as templates and build upon that starting framework, rather than reinvent the wheel.

Cheers,
   Ben Smith

Sent from my mobile device.

On Sep 11, 2018, at 12:51 AM, Ian Dobbie <[hidden email]> wrote:

> *****
> To join, leave or search the confocal microscopy listserv, go to:
> http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
> Post images on http://www.imgur.com and include the link in your posting.
> *****
>
> Hi Ben
>
> Sounds really interesting. We do our hardware control from python so would it be possible to release either python bindings or the exact specs for the communication fro talking to the Arduino so we could talk to it in python.
>
> I assume that you are doing serial to the Arduino given your statement at the end about a java serial library. If so it is probably easiest just to fully document the communication protocol used.
>
> Thanks.
>
> Ian
>
> Sent from my iPhone
>
>> On 11 Sep 2018, at 02:24, Benjamin E Smith <[hidden email]> wrote:
>>
>> *****
>> To join, leave or search the confocal microscopy listserv, go to:
>> http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
>> Post images on http://www.imgur.com and include the link in your posting.
>> *****
>>
>> Hey Microscopists,
>>
>> *TL;DR:*
>> I am in the process of writing a graphical user interface (GUI) for an
>> open-source high speed LED driver I've designed and built, and was hoping
>> to poll any listserv members who think they may have a need for such a
>> driver, and get feedback on what sort of uses and input/output
>> configurations they envision requiring in their research to make sure the
>> software can accommodate as many potential uses as possible with the goal
>> that people won't have to write/optimize their own code to use the driver.
>>
>>
>> Images of LED driver I/Os:
>> Front Panel -  https://goo.gl/9Lwpq9
>> Back Panel -  https://goo.gl/JJH8kX
>> The GUI (Extremely alpha version) -  https://goo.gl/VEWXEp
>>
>> *The background:*
>> I'm currently working on a high-speed LED driver (0 to 20A max and DC to >1
>> MHz 0-100% modulation) that works as an Arduino shield, which I am hoping
>> to release soon as a fully open-source project geared towards anyone being
>> able to make their own high performance LED drivers.  Specifically, the
>> driver utilizes two of the Arduino analog pins (one diode protected) as
>> input triggers/syncs and two digital pins as I/O triggers/syncs.  The
>> hardware is up and running and has been tested with a 500 mA max current
>> configuration on a re-wired Thorlabs LED (60 cm total wire length: see -
>> https://goo.gl/tbnfSZ) and the LED current settled in just 400 ns when
>> modulated with a 0-500 mA square wave with minimal overshoot (see -
>> https://goo.gl/CcYh2o NOTE: 1V = 100mA, top trace is input, bottom trace is
>> LED ouput).  Once the software is finished I will be building and testing a
>> 20A version, then writing up a full characterization, and a build/user
>> manual.
>>
>> *My question for the listserv:*
>> Right now I am working on a platform independent (i.e. Java) user interface
>> so people won't have to worry about writing/optimizing their own Arduino
>> code (at least not for core tasks), and would like to get feedback on any
>> possible types of sync schemes/applications people think they would like to
>> see implemented, as this is the point in the project where they would be
>> easiest to incorporate.  Therefore, if anyone thinks they may want to use
>> this LED driver in their own research, then I was wondering if you could
>> get in touch with me ASAP and let me know what kind of inputs/triggers and
>> outputs you envision you would need or want, so I can make the GUI and
>> Arduino code as versatile as possible.
>>
>> *More information on the driver input signals and I/O pins:*
>> Specifically, the LED driver uses two Arduino analog pins and two digital
>> pins for I/O syncs/triggers.  To drive the LED itself, the driver can use
>> an external analog signal or an on-board 8-bit digital potentiometer as a
>> high-speed arbitrary wave generator (AWG) (up to 1 MHz sample rate), both
>> of which pass through an analog switch for an additional DC to 8 MHz square
>> wave modulation.
>>
>> The Arduino analog pins can sample a 0-5V signal at up to 200 kHz with
>> 10-bit precision, and the digital pins can be used as an input or output at
>> up to 16 MHz, although any additional logic/checks in the Arduino
>> programming will reduce these sample rates.
>>
>> *Sample of I/O schemes for our own research:*
>> For our own research needs I will be implementing the following
>> configurations:
>> 1) Confocal line-clock sync - High speed digital input to trigger AWG
>> output with adjustable µs delay
>> 2) Confocal fast-mirror sync - High speed analog input to trigger AWG
>> output with adjustable µs delay
>> 3) Confocal mirror sync with shutter - Analog sync that starts only when
>> shutter (digital) is open
>> 4) PWM fan control for high current LEDs - Adjust speed of LED fan based on
>> LED temp
>> 5) Continuous DC to 8 MHz PWM on analog switch for FLIM and PLIM.
>>
>> Thank you in advance for your feedback and ideas,
>>  Ben Smith
>>
>> P.S.
>> A huge thanks goes out to the authors of JSerialComm for releasing, and
>> more importantly continuing to maintain, a platform independent open-source
>> serial communication library.  The GUI side of things would be
>> dead-in-the-water without it.
>>
>> --
>> Benjamin E. Smith, Ph. D.
>> Imaging Specialist, Vision Science
>> University of California, Berkeley
>> 195 Life Sciences Addition
>> Berkeley, CA  94720-3200
>> Tel  (510) 642-9712
>> Fax (510) 643-6791
>> e-mail: [hidden email]
>> http://vision.berkeley.edu/?page_id=5635 <http://vision.berkeley.edu/>
Craig Brideau Craig Brideau
Reply | Threaded
Open this post in threaded view
|

Re: Soliciting ideas for sync/trigger schemes for an open-source high-speed LED driver

*****
To join, leave or search the confocal microscopy listserv, go to:
http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
Post images on http://www.imgur.com and include the link in your posting.
*****

Sounds interesting! The ability to pre-load the hardware with pulse
patterns that could be fired by one of the external triggers would be
useful, especially for optogenetics. A simple example would be a 100ms
pulse of a specific amplitude, with the option to fire a single pulse, or
fire 'n' pulses with a delay of 'x'ms between them. An optional pre-delay
would also be useful to allow offsetting of the trigger pulse and the
actual start of the pulse train or single shot pulse.

Craig

On Tue, Sep 11, 2018 at 2:35 AM Benjamin E Smith <
[hidden email]> wrote:

> *****
> To join, leave or search the confocal microscopy listserv, go to:
> http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
> Post images on http://www.imgur.com and include the link in your posting.
> *****
>
> Hey Ian,
>     That is a great idea and is absolutely doable.  Like you said,
> probably the best way would be to add a serial communication section to the
> user manual describing the packet structure, a list of possible commands,
> and the startup handshake sequence (much like in a datasheet).  If people
> would like, I could also post a link to their implementations in the main
> repository, so that other people can use them as templates and build upon
> that starting framework, rather than reinvent the wheel.
>
> Cheers,
>    Ben Smith
>
> Sent from my mobile device.
>
> On Sep 11, 2018, at 12:51 AM, Ian Dobbie <[hidden email]>
> wrote:
>
> > *****
> > To join, leave or search the confocal microscopy listserv, go to:
> > http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
> > Post images on http://www.imgur.com and include the link in your
> posting.
> > *****
> >
> > Hi Ben
> >
> > Sounds really interesting. We do our hardware control from python so
> would it be possible to release either python bindings or the exact specs
> for the communication fro talking to the Arduino so we could talk to it in
> python.
> >
> > I assume that you are doing serial to the Arduino given your statement
> at the end about a java serial library. If so it is probably easiest just
> to fully document the communication protocol used.
> >
> > Thanks.
> >
> > Ian
> >
> > Sent from my iPhone
> >
> >> On 11 Sep 2018, at 02:24, Benjamin E Smith <[hidden email]>
> wrote:
> >>
> >> *****
> >> To join, leave or search the confocal microscopy listserv, go to:
> >> http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
> >> Post images on http://www.imgur.com and include the link in your
> posting.
> >> *****
> >>
> >> Hey Microscopists,
> >>
> >> *TL;DR:*
> >> I am in the process of writing a graphical user interface (GUI) for an
> >> open-source high speed LED driver I've designed and built, and was
> hoping
> >> to poll any listserv members who think they may have a need for such a
> >> driver, and get feedback on what sort of uses and input/output
> >> configurations they envision requiring in their research to make sure
> the
> >> software can accommodate as many potential uses as possible with the
> goal
> >> that people won't have to write/optimize their own code to use the
> driver.
> >>
> >>
> >> Images of LED driver I/Os:
> >> Front Panel -  https://goo.gl/9Lwpq9
> >> Back Panel -  https://goo.gl/JJH8kX
> >> The GUI (Extremely alpha version) -  https://goo.gl/VEWXEp
> >>
> >> *The background:*
> >> I'm currently working on a high-speed LED driver (0 to 20A max and DC
> to >1
> >> MHz 0-100% modulation) that works as an Arduino shield, which I am
> hoping
> >> to release soon as a fully open-source project geared towards anyone
> being
> >> able to make their own high performance LED drivers.  Specifically, the
> >> driver utilizes two of the Arduino analog pins (one diode protected) as
> >> input triggers/syncs and two digital pins as I/O triggers/syncs.  The
> >> hardware is up and running and has been tested with a 500 mA max current
> >> configuration on a re-wired Thorlabs LED (60 cm total wire length: see -
> >> https://goo.gl/tbnfSZ) and the LED current settled in just 400 ns when
> >> modulated with a 0-500 mA square wave with minimal overshoot (see -
> >> https://goo.gl/CcYh2o NOTE: 1V = 100mA, top trace is input, bottom
> trace is
> >> LED ouput).  Once the software is finished I will be building and
> testing a
> >> 20A version, then writing up a full characterization, and a build/user
> >> manual.
> >>
> >> *My question for the listserv:*
> >> Right now I am working on a platform independent (i.e. Java) user
> interface
> >> so people won't have to worry about writing/optimizing their own Arduino
> >> code (at least not for core tasks), and would like to get feedback on
> any
> >> possible types of sync schemes/applications people think they would
> like to
> >> see implemented, as this is the point in the project where they would be
> >> easiest to incorporate.  Therefore, if anyone thinks they may want to
> use
> >> this LED driver in their own research, then I was wondering if you could
> >> get in touch with me ASAP and let me know what kind of inputs/triggers
> and
> >> outputs you envision you would need or want, so I can make the GUI and
> >> Arduino code as versatile as possible.
> >>
> >> *More information on the driver input signals and I/O pins:*
> >> Specifically, the LED driver uses two Arduino analog pins and two
> digital
> >> pins for I/O syncs/triggers.  To drive the LED itself, the driver can
> use
> >> an external analog signal or an on-board 8-bit digital potentiometer as
> a
> >> high-speed arbitrary wave generator (AWG) (up to 1 MHz sample rate),
> both
> >> of which pass through an analog switch for an additional DC to 8 MHz
> square
> >> wave modulation.
> >>
> >> The Arduino analog pins can sample a 0-5V signal at up to 200 kHz with
> >> 10-bit precision, and the digital pins can be used as an input or
> output at
> >> up to 16 MHz, although any additional logic/checks in the Arduino
> >> programming will reduce these sample rates.
> >>
> >> *Sample of I/O schemes for our own research:*
> >> For our own research needs I will be implementing the following
> >> configurations:
> >> 1) Confocal line-clock sync - High speed digital input to trigger AWG
> >> output with adjustable µs delay
> >> 2) Confocal fast-mirror sync - High speed analog input to trigger AWG
> >> output with adjustable µs delay
> >> 3) Confocal mirror sync with shutter - Analog sync that starts only when
> >> shutter (digital) is open
> >> 4) PWM fan control for high current LEDs - Adjust speed of LED fan
> based on
> >> LED temp
> >> 5) Continuous DC to 8 MHz PWM on analog switch for FLIM and PLIM.
> >>
> >> Thank you in advance for your feedback and ideas,
> >>  Ben Smith
> >>
> >> P.S.
> >> A huge thanks goes out to the authors of JSerialComm for releasing, and
> >> more importantly continuing to maintain, a platform independent
> open-source
> >> serial communication library.  The GUI side of things would be
> >> dead-in-the-water without it.
> >>
> >> --
> >> Benjamin E. Smith, Ph. D.
> >> Imaging Specialist, Vision Science
> >> University of California, Berkeley
> >> 195 Life Sciences Addition
> >> Berkeley, CA  94720-3200
> >> Tel  (510) 642-9712
> >> Fax (510) 643-6791
> >> e-mail: [hidden email]
> >> http://vision.berkeley.edu/?page_id=5635 <http://vision.berkeley.edu/>
>
Benjamin Smith Benjamin Smith
Reply | Threaded
Open this post in threaded view
|

Re: Soliciting ideas for sync/trigger schemes for an open-source high-speed LED driver

*****
To join, leave or search the confocal microscopy listserv, go to:
http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
Post images on http://www.imgur.com and include the link in your posting.
*****

Hey Craig,
   We were thinking of adding a similar feature as there are quite a few
labs here now working with optogenetics.  A fixed pulse width, rate, and
count would be easy to implement,  and I may also try to accommodate a
custom list of pulse widths and delays, depending on whether there is any
memory left in the poor little Arduino.  Also, a lot of electrophysiology
units have an analog output, so that too can be used to drive the LED,
giving good time correlation between the electrophysiology recording and
optical stimulation.

Cheers,
   Ben Smith

On Tue, Sep 11, 2018 at 9:58 AM, Craig Brideau <[hidden email]>
wrote:

> *****
> To join, leave or search the confocal microscopy listserv, go to:
> http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
> Post images on http://www.imgur.com and include the link in your posting.
> *****
>
> Sounds interesting! The ability to pre-load the hardware with pulse
> patterns that could be fired by one of the external triggers would be
> useful, especially for optogenetics. A simple example would be a 100ms
> pulse of a specific amplitude, with the option to fire a single pulse, or
> fire 'n' pulses with a delay of 'x'ms between them. An optional pre-delay
> would also be useful to allow offsetting of the trigger pulse and the
> actual start of the pulse train or single shot pulse.
>
> Craig
>
> On Tue, Sep 11, 2018 at 2:35 AM Benjamin E Smith <
> [hidden email]> wrote:
>
> > *****
> > To join, leave or search the confocal microscopy listserv, go to:
> > http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
> > Post images on http://www.imgur.com and include the link in your
> posting.
> > *****
> >
> > Hey Ian,
> >     That is a great idea and is absolutely doable.  Like you said,
> > probably the best way would be to add a serial communication section to
> the
> > user manual describing the packet structure, a list of possible commands,
> > and the startup handshake sequence (much like in a datasheet).  If people
> > would like, I could also post a link to their implementations in the main
> > repository, so that other people can use them as templates and build upon
> > that starting framework, rather than reinvent the wheel.
> >
> > Cheers,
> >    Ben Smith
> >
> > Sent from my mobile device.
> >
> > On Sep 11, 2018, at 12:51 AM, Ian Dobbie <[hidden email]>
> > wrote:
> >
> > > *****
> > > To join, leave or search the confocal microscopy listserv, go to:
> > > http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
> > > Post images on http://www.imgur.com and include the link in your
> > posting.
> > > *****
> > >
> > > Hi Ben
> > >
> > > Sounds really interesting. We do our hardware control from python so
> > would it be possible to release either python bindings or the exact specs
> > for the communication fro talking to the Arduino so we could talk to it
> in
> > python.
> > >
> > > I assume that you are doing serial to the Arduino given your statement
> > at the end about a java serial library. If so it is probably easiest just
> > to fully document the communication protocol used.
> > >
> > > Thanks.
> > >
> > > Ian
> > >
> > > Sent from my iPhone
> > >
> > >> On 11 Sep 2018, at 02:24, Benjamin E Smith <
> [hidden email]>
> > wrote:
> > >>
> > >> *****
> > >> To join, leave or search the confocal microscopy listserv, go to:
> > >> http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
> > >> Post images on http://www.imgur.com and include the link in your
> > posting.
> > >> *****
> > >>
> > >> Hey Microscopists,
> > >>
> > >> *TL;DR:*
> > >> I am in the process of writing a graphical user interface (GUI) for an
> > >> open-source high speed LED driver I've designed and built, and was
> > hoping
> > >> to poll any listserv members who think they may have a need for such a
> > >> driver, and get feedback on what sort of uses and input/output
> > >> configurations they envision requiring in their research to make sure
> > the
> > >> software can accommodate as many potential uses as possible with the
> > goal
> > >> that people won't have to write/optimize their own code to use the
> > driver.
> > >>
> > >>
> > >> Images of LED driver I/Os:
> > >> Front Panel -  https://goo.gl/9Lwpq9
> > >> Back Panel -  https://goo.gl/JJH8kX
> > >> The GUI (Extremely alpha version) -  https://goo.gl/VEWXEp
> > >>
> > >> *The background:*
> > >> I'm currently working on a high-speed LED driver (0 to 20A max and DC
> > to >1
> > >> MHz 0-100% modulation) that works as an Arduino shield, which I am
> > hoping
> > >> to release soon as a fully open-source project geared towards anyone
> > being
> > >> able to make their own high performance LED drivers.  Specifically,
> the
> > >> driver utilizes two of the Arduino analog pins (one diode protected)
> as
> > >> input triggers/syncs and two digital pins as I/O triggers/syncs.  The
> > >> hardware is up and running and has been tested with a 500 mA max
> current
> > >> configuration on a re-wired Thorlabs LED (60 cm total wire length:
> see -
> > >> https://goo.gl/tbnfSZ) and the LED current settled in just 400 ns
> when
> > >> modulated with a 0-500 mA square wave with minimal overshoot (see -
> > >> https://goo.gl/CcYh2o NOTE: 1V = 100mA, top trace is input, bottom
> > trace is
> > >> LED ouput).  Once the software is finished I will be building and
> > testing a
> > >> 20A version, then writing up a full characterization, and a build/user
> > >> manual.
> > >>
> > >> *My question for the listserv:*
> > >> Right now I am working on a platform independent (i.e. Java) user
> > interface
> > >> so people won't have to worry about writing/optimizing their own
> Arduino
> > >> code (at least not for core tasks), and would like to get feedback on
> > any
> > >> possible types of sync schemes/applications people think they would
> > like to
> > >> see implemented, as this is the point in the project where they would
> be
> > >> easiest to incorporate.  Therefore, if anyone thinks they may want to
> > use
> > >> this LED driver in their own research, then I was wondering if you
> could
> > >> get in touch with me ASAP and let me know what kind of inputs/triggers
> > and
> > >> outputs you envision you would need or want, so I can make the GUI and
> > >> Arduino code as versatile as possible.
> > >>
> > >> *More information on the driver input signals and I/O pins:*
> > >> Specifically, the LED driver uses two Arduino analog pins and two
> > digital
> > >> pins for I/O syncs/triggers.  To drive the LED itself, the driver can
> > use
> > >> an external analog signal or an on-board 8-bit digital potentiometer
> as
> > a
> > >> high-speed arbitrary wave generator (AWG) (up to 1 MHz sample rate),
> > both
> > >> of which pass through an analog switch for an additional DC to 8 MHz
> > square
> > >> wave modulation.
> > >>
> > >> The Arduino analog pins can sample a 0-5V signal at up to 200 kHz with
> > >> 10-bit precision, and the digital pins can be used as an input or
> > output at
> > >> up to 16 MHz, although any additional logic/checks in the Arduino
> > >> programming will reduce these sample rates.
> > >>
> > >> *Sample of I/O schemes for our own research:*
> > >> For our own research needs I will be implementing the following
> > >> configurations:
> > >> 1) Confocal line-clock sync - High speed digital input to trigger AWG
> > >> output with adjustable µs delay
> > >> 2) Confocal fast-mirror sync - High speed analog input to trigger AWG
> > >> output with adjustable µs delay
> > >> 3) Confocal mirror sync with shutter - Analog sync that starts only
> when
> > >> shutter (digital) is open
> > >> 4) PWM fan control for high current LEDs - Adjust speed of LED fan
> > based on
> > >> LED temp
> > >> 5) Continuous DC to 8 MHz PWM on analog switch for FLIM and PLIM.
> > >>
> > >> Thank you in advance for your feedback and ideas,
> > >>  Ben Smith
> > >>
> > >> P.S.
> > >> A huge thanks goes out to the authors of JSerialComm for releasing,
> and
> > >> more importantly continuing to maintain, a platform independent
> > open-source
> > >> serial communication library.  The GUI side of things would be
> > >> dead-in-the-water without it.
> > >>
> > >> --
> > >> Benjamin E. Smith, Ph. D.
> > >> Imaging Specialist, Vision Science
> > >> University of California, Berkeley
> > >> 195 Life Sciences Addition
> > >> Berkeley, CA  94720-3200
> > >> Tel  (510) 642-9712
> > >> Fax (510) 643-6791
> > >> e-mail: [hidden email]
> > >> http://vision.berkeley.edu/?page_id=5635 <http://vision.berkeley.edu/
> >
> >
>



--
Benjamin E. Smith, Ph. D.
Imaging Specialist, Vision Science
University of California, Berkeley
195 Life Sciences Addition
Berkeley, CA  94720-3200
Tel  (510) 642-9712
Fax (510) 643-6791
e-mail: [hidden email]
http://vision.berkeley.edu/?page_id=5635 <http://vision.berkeley.edu/>
Alex Asanov Alex Asanov
Reply | Threaded
Open this post in threaded view
|

Re: Soliciting ideas for sync/trigger schemes for an open-source high-speed LED driver

In reply to this post by Benjamin Smith
*****
To join, leave or search the confocal microscopy listserv, go to:
http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
Post images on http://www.imgur.com and include the link in your posting.
*****

Hello Ben,

We are currently working on a similar task for Forster Resonance Energy Transfer (FRET) applications for our 3-, 4-, and 6-color lasers and LEDs. Their drivers are equipped with analog modulation ports. We are making an Arduino based controller, a standalone software module, and a micro-Manager plugin. Our primary task at the moment is FRET. However, we also thought about optogenetics and want to keep the door open for as many other potential applications as possible. I will connect you with our engineer.
 
Best regards,
Alexander Asanov, Ph.D.
President,  TIRF Labs
Cary, NC 27519
TIRF-Labs.com; TIRFmicroscopy.com
[hidden email]

-----Original Message-----
From: Confocal Microscopy List [mailto:[hidden email]] On Behalf Of Benjamin E Smith
Sent: Monday, September 10, 2018 9:22 PM
To: [hidden email]
Subject: Soliciting ideas for sync/trigger schemes for an open-source high-speed LED driver

*****
To join, leave or search the confocal microscopy listserv, go to:
http://lists.umn.edu/cgi-bin/wa?A0=confocalmicroscopy
Post images on http://www.imgur.com and include the link in your posting.
*****

Hey Microscopists,

*TL;DR:*
I am in the process of writing a graphical user interface (GUI) for an open-source high speed LED driver I've designed and built, and was hoping to poll any listserv members who think they may have a need for such a driver, and get feedback on what sort of uses and input/output configurations they envision requiring in their research to make sure the software can accommodate as many potential uses as possible with the goal that people won't have to write/optimize their own code to use the driver.


Images of LED driver I/Os:
Front Panel -  https://goo.gl/9Lwpq9
Back Panel -  https://goo.gl/JJH8kX
The GUI (Extremely alpha version) -  https://goo.gl/VEWXEp

*The background:*
I'm currently working on a high-speed LED driver (0 to 20A max and DC to >1 MHz 0-100% modulation) that works as an Arduino shield, which I am hoping to release soon as a fully open-source project geared towards anyone being able to make their own high performance LED drivers.  Specifically, the driver utilizes two of the Arduino analog pins (one diode protected) as input triggers/syncs and two digital pins as I/O triggers/syncs.  The hardware is up and running and has been tested with a 500 mA max current configuration on a re-wired Thorlabs LED (60 cm total wire length: see -
https://goo.gl/tbnfSZ) and the LED current settled in just 400 ns when modulated with a 0-500 mA square wave with minimal overshoot (see - https://goo.gl/CcYh2o NOTE: 1V = 100mA, top trace is input, bottom trace is LED ouput).  Once the software is finished I will be building and testing a 20A version, then writing up a full characterization, and a build/user manual.

*My question for the listserv:*
Right now I am working on a platform independent (i.e. Java) user interface so people won't have to worry about writing/optimizing their own Arduino code (at least not for core tasks), and would like to get feedback on any possible types of sync schemes/applications people think they would like to see implemented, as this is the point in the project where they would be easiest to incorporate.  Therefore, if anyone thinks they may want to use this LED driver in their own research, then I was wondering if you could get in touch with me ASAP and let me know what kind of inputs/triggers and outputs you envision you would need or want, so I can make the GUI and Arduino code as versatile as possible.

*More information on the driver input signals and I/O pins:* Specifically, the LED driver uses two Arduino analog pins and two digital pins for I/O syncs/triggers.  To drive the LED itself, the driver can use an external analog signal or an on-board 8-bit digital potentiometer as a high-speed arbitrary wave generator (AWG) (up to 1 MHz sample rate), both of which pass through an analog switch for an additional DC to 8 MHz square wave modulation.

The Arduino analog pins can sample a 0-5V signal at up to 200 kHz with 10-bit precision, and the digital pins can be used as an input or output at up to 16 MHz, although any additional logic/checks in the Arduino programming will reduce these sample rates.

*Sample of I/O schemes for our own research:* For our own research needs I will be implementing the following
configurations:
1) Confocal line-clock sync - High speed digital input to trigger AWG output with adjustable µs delay
2) Confocal fast-mirror sync - High speed analog input to trigger AWG output with adjustable µs delay
3) Confocal mirror sync with shutter - Analog sync that starts only when shutter (digital) is open
4) PWM fan control for high current LEDs - Adjust speed of LED fan based on LED temp
5) Continuous DC to 8 MHz PWM on analog switch for FLIM and PLIM.

Thank you in advance for your feedback and ideas,
   Ben Smith

P.S.
A huge thanks goes out to the authors of JSerialComm for releasing, and more importantly continuing to maintain, a platform independent open-source serial communication library.  The GUI side of things would be dead-in-the-water without it.

--
Benjamin E. Smith, Ph. D.
Imaging Specialist, Vision Science
University of California, Berkeley
195 Life Sciences Addition
Berkeley, CA  94720-3200
Tel  (510) 642-9712
Fax (510) 643-6791
e-mail: [hidden email]
http://vision.berkeley.edu/?page_id=5635 <http://vision.berkeley.edu/>