controller for laser-based 3D printers

Showroom for MicroPython related hardware projects.
Target audience: Users wanting to show off their project!
Post Reply
danielm
Posts: 167
Joined: Mon Oct 05, 2015 12:24 pm

controller for laser-based 3D printers

Post by danielm » Mon Oct 05, 2015 1:54 pm

Hi everybody, I am new here :)

I am considering to give pyboard a try in next iteration of my controller for laser-based 3D printers.
I briefly went through the forums and found some doubts regarding DAC output quality. What is the latest experience with it? I would initialy run it at 10-bit resolution, however in the future I would like to make use of full 12 bits without any significant noises or artifacts. Around 30 kS for each DAC simultaneously is enough for my purpose.

My first prototype runs on Raspberry Pi with external SPI DACs and stepper motor controller. UI is browser-based and slicing is performed on server-side. It works but SPI transaction in Linux environment takes a lot of time so I think this is the right moment to move the development to MCU-world :)

I would also like to ask, is there any support for websocket-based RPC and/or Pub-Sub protocols like WAMP, socket.io in MicroPython?

Thanks a lot for your answers and opinions!

Daniel

danielm
Posts: 167
Joined: Mon Oct 05, 2015 12:24 pm

Re: controller for laser-based 3D printers

Post by danielm » Tue Jan 19, 2016 6:19 pm

An update after a long time - I am working on electronics design - second prototype will consist of three boards:
- carrier board for connection of three Pololu stepper drivers and two subboards
- subboard for galvanometer control
- subboard with CC3200 MCU

You can check the first PCB here: http://marsaltech.com/update-december-2015/
Subboard design is not ready yet, however it will soon be.

A feature of MicroPython I am still missing is a way how to push messages from CC3200 to the server and then to the browser client running the UI and vice versa. MQTT was previously discussed as possibility however it seems that no existing implementation will run on MicroPython without threading or full asyncio support. WAMP developers are also not planning to develop MicroPython client themselves.

I am thinking to use long-polling technique or webhooks however it will make it much more difficult to get the message from MicroPython client to the browser client.

Which approach would you choose?

danielm
Posts: 167
Joined: Mon Oct 05, 2015 12:24 pm

Re: controller for laser-based 3D printers

Post by danielm » Fri Feb 12, 2016 7:45 am

MCU sub-board is flashed with binary built yesterday and running.
WiFi STA mode and microSD card mounting was tested. MicroSD slot is located on the bottom side of MCU sub-board and cannot be seen on the photo.
In the right slot of the carrier/stepper board there will be a galvanometer sub-board installed. The PCB is already manufactured.

Looking forward for MQTT client functionality which is really essential in my project ;-)
Attachments
prototype_v2_pic_small.jpg
prototype_v2_pic_small.jpg (202.23 KiB) Viewed 7888 times

danielm
Posts: 167
Joined: Mon Oct 05, 2015 12:24 pm

Re: controller for laser-based 3D printers

Post by danielm » Wed Mar 02, 2016 6:53 pm

Controller can now connect to our cloud service and download G-code files. It can also control all three stepper motor drivers and read optical endstops.
Attachments
prototype_v2_20160302_small.jpg
prototype_v2_20160302_small.jpg (167.42 KiB) Viewed 7249 times

danielm
Posts: 167
Joined: Mon Oct 05, 2015 12:24 pm

Re: controller for laser-based 3D printers

Post by danielm » Sat Jun 18, 2016 6:49 am

An update regarding our project:

We are developing our solution in a best-effort way because the project is being funded solely by us – company founders. There will be approx. 3 month interruption in the controller development because we are currently earning money by developing custom IoT embedded device for 3rd party customer. This money will allow us to continue with development of our solution for laser-based 3D printing.

Status of development:
– Galvo control is working, however current performance is only 2.5kpps. In the near future I will focus on how to improve the scanning speed as I believe that it is currently limited by software SPI driver and Python execution time. Other option is to test it with other microcontroller platform (e.g. ESP32) and in case of success we will develop MCU board based on this platform.
– Laser control can be done by any of 8 GPIO lines of the microcontroller directly, if laser driver works with 3.3V control signal voltage.
– Linear motion (for Z axis, viper, tilting mechanism, etc.) works without any issues. The board currently offers 3 slots for Pololu stepper drivers and two reference switches (endstops) per each driver.
– Firmware of the board can parse G-code file, stored on local SD-card and scan accordingly. Currently, only G-code format which is produced by our experimental slicer is supported.
– The slicer runs on our server together with experimental web-based UI.
– Firmware of the board can connect to this server, list available G-code files and download individual files to its SD-card. Currently, these actions can be triggered only from CLI of the controller. Integration with the UI needs to be done.

Basic idea of our solution is that the printer built on top of it can work without any directly connected PC. User controls the printer and prepares printing data via web-UI, which can be accessed from anywhere in the Internet. 3D object is uploaded to the server and slicing is performed server-side. Then the G-code can be downloaded to the printer by a command (button) in the UI and start of printing process can be triggered.

The controller is also equipped with UART interface for Nextion HMI display, therefore local touch UI can also be supported. I already tried this for linear motion control testing and it worked well.

We are also considering to launch crowdfunding campaign later this year which would allow the controller to become fully developed and open-source. What is your opinion?
status_Q2_2016_small.jpg
status_Q2_2016_small.jpg (238.59 KiB) Viewed 6493 times

Post Reply