MicroFPGA: An affordable FPGA platform for microscope control
Modern microscopy relies increasingly on microscope automation to improve throughput, ensure reproducibility or observe rare events. Automation requires computer control of the important elements of the microscope. Furthermore, optical elements that are usually fixed or manually movable can be placed on electronically-controllable elements. In most cases, a central electronics board is necessary to generate the control signals they require and to communicate with the computer. For such tasks, Arduino microcontrollers are widely used due to their low cost and programming entry barrier. However, they are limiting in their performance for applications that require high-speed or multiple parallel processes. Field programmable gate arrays (FPGA) are the perfect technology for high-speed microscope control, as they are capable of processing signals in parallel and with high temporal precision. While plummeting prices made the technology available to consumers, a major hurdle remaining is the complex languages used to configure them. In this work, we used an affordable FPGA, delivered with an open-source and friendly-to-use programming language, to create a versatile microscope control platform called MicroFPGA. It is capable of synchronously triggering cameras and multiple lasers following complex patterns, as well as generating various signals used to control microscope elements such as filter wheels, servomotor stages, flip-mirrors, laser power or acousto-optic modulators. MicroFPGA is open-source and we provide online Micro-Manager, Java, Python and LabVIEW libraries, together with blueprints and tutorials.