With the introduction of the Mk4 units, we've also introduced a new way to command the 3D Chameleon and new expansion capabilities. In order to take advantage of these new features, you'll need to update your firmware AND the BOOTLOADER. To update the Bootloader, make sure you have the Arduino IDE installed, go to the Tools Menu and select the "Programmer" you have. Once you've done that, select "Tools|Burn Bootloader". This is necessary for the new firmware to work. If your firmware doesn't respond after burning it, it's most likely because you haven't completed the bootloader successfully. Simply try it again. Select Your Programmer from the Tools Menu:
Select "Burn Bootloader":
You can reprogram your electronics with the new firmware by downloading the new firmware (attached to this thread), installing the Arduino environment and then running the following command from the location of your downloaded (and extracted) firmware. "\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe" -v -p m328p -c usbtiny -U flash:w:SelectorFirmwareMk3.1.
hex:i -C "\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" Please note, I am use the Adafruit USBTiny programmer, but you can use anything you choose... you'll need to update this command to reference your own programmer in that case. You can also use any operating system you choose, but be sure to also update the paths in the command to match your OS specific requirements. Be sure to update the "Bootloader" in the Arduino environment to insure the clock speed of the 3DChameleon is updated to the new Mk4 timing. For the Adafruit USBTiny programmer, make sure to only use the Adafruit drivers... the Zadig drivers WILL NOT WORK on real Adafruit devices.(https://learn.adafruit.com/adafruit-arduino-ide-setup/windows-driver-installation) Chris Riley did a great video on upgrading the 3DChameleon's firmware over on his YouTube channel here: https://www.youtube.com/watch?v=G7YNcXE9gfU&pp=ygUVM2QgY2hhbWVsZW9uIHByaW50aW5n Also, check out his step by step instructions here: https://docs.google.com/document/d/1-OkkDjHdcTeN9WLbiT6VLYRj_YzjyalHT2G0v7SsgG4 Don't forget to like and subscribe to his channel. He has other great videos on the 3DChameleon as well. Bill
(PS, This Zip file contains 4 versions of the firmware... Normal (180 degree servo), Reversed Direction Servo, 270 Degree Servo and Reversed 270 Degree Servo.)
Hi I have the 3d chameleon and an arduino uno3. I followed the instructions on chris basement for upgrading the firmware to the latest version MK4. I had no errors and everything seemed to go as instructed.
Right now when I connect my chameleon back up and try to operate it by pressing the button to command the filament change nothing happens but I do hear a single pulse sound from a stepper. it doesnt matter how long i press it nothing else happens.. The green light comes on the chameleon as before. Of course the chameleon was working as intended before the firmware upgrade. I want to use the screen and the 3d clippy hence the reason for the firmware upgrade.
In the above article that Bill wrote he mentions the boot loader.. But the chris basement video doesnt mention this at all. So my question is what the correct way to upgrade the firmware? Do I need to follow bills instruction to upgrade the boot loader then follow the chris basement video for the firmware? what went wrong here?
Below is a snippet of the firmware upgrade too.
C:\Users\KEVIN PC\Desktop>avrdude -Pcom4 -b19200 -cavrisp -pm328p -v -e -U flash:w:SelectorFirmwareMk4.ino.hex:i
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"
Using Port : com4
Using Programmer : avrisp
Overriding Baud Rate : 19200
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : STK500
Description : Atmel AVR ISP
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: lfuse reads as 62
avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as FF
avrdude: erasing chip
avrdude: reading input file "SelectorFirmwareMk4.ino.hex"
avrdude: writing flash (12426 bytes):
Writing | ################################################## | 100% 14.05s
avrdude: 12426 bytes of flash written
avrdude: verifying flash memory against SelectorFirmwareMk4.ino.hex:
avrdude: load data flash data from input file SelectorFirmwareMk4.ino.hex:
avrdude: input file SelectorFirmwareMk4.ino.hex contains 12426 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 8.03s
avrdude: verifying ...
avrdude: 12426 bytes of flash verified
avrdude: safemode: lfuse reads as 62
avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as FF
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
avrdude done. Thank you.
Hi Guys
I am trying to update using a usbasp and I am getting this error.
Can anyone help me out ?
Flashed SelectorFirmwareMk4.ino.hex to MK3 with USBTiny (last programmer used in the video) - flash ok, but board doesn't work, it turns on, but if I press the switch - no reaction.
Should I use different firmware?
Bill ,
I got one of the 1st version of the MK2 back in MRFF2021 I can use the firmware 3.1 no problem but if I try the MK4 it will not work . I can go back to 3.1 no problem .
What Am I missing to get it to work with MK4 ? I really want to add a display to my setup.
Thanks .
For the mac people using an Arduino Board and Example 11. Make sure your programmer is arduino_as_isp so your command would be
"avrdude -p m328p -c arduino_as_isp -P /dev/cu.usbmodem1433201 -v -e -U flash:w:/Users/challgren/3dprint/3dchameleon-mk4/SelectorFirmwareMk4.ino.hex:i"
I've got a USBasp trying to do this, so I understand the instructions are going to be a bit different, but Im so lost. I thought I knew what I was doing, but I guess not. Any help with using a USBAsp to program the MK4?
Do units that were received within the last couple weeks come with MK3 or MK4 firmware preinstalled?
Hi Guys
Nice to meet you all
I have just get my 3d chameleon and I'am trying to update the firmware
I have an arduino mega 2560 and when i type this command
avrdude -P com8 -b 19200 -c avrisp -p m2560 -v
I get this error
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf"
Using Port : com4
Using Programmer : avrisp
Overriding Baud Rate : 19200
AVR Part : ATmega2560
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x00 0x00
flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : STK500
Description : Atmel AVR ISP
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.03s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
I have check and recheck all connections but i always get this error
Any Ideas ?
Can anyone explain the steps to burn a bootloader? I have both an Adruino Uno R3 and TinyUSB but have had no luck.
Oh, and for those that need to go back to the Mk3 firmware, here is the zip file for it. Please note, once you update the Bootloader to the latest, you'll need to install this as a Breadboard 328P using the internal oscillator... otherwise the clock speed will be incorrect.
To set up your Arduino Environment, follow the instructions here for the Minimal Circuit (Eliminating the External Clock): https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoToBreadboard/
Bill
Hi has anyone done this on mac? I have follow videos and I am at a stand still. Any adivce?
Quick question. I don't see the AVRTools nor AVRdude in my Arduino setup. Is this something I need to get separately?
I'm looking for some clarification on firmware versions. I purchased my unit in December, and it seems to have the Mk4 firmware. Do I need to upgrade it? After I solder the headers on, can I plug everything in and it just works? Or is there and 'Mk4 Pro' firmware to make the screen and cutter work? Or are they out there as 'hidden' features? How can I check the firmware version? (I have a USBTiny that should be here tomorrow, along with the screen. Just looking for some guidance on the new stuff and a full step=by=step to enable it.
Unfortunately, I'm at a complete loss. I've done extremely minimal work with Arduino. I have a FTDI232 adapter, but have little clue how it's connected or how to interface the Aduino IDE to it. Chris's video does well explaning how to do it with a UNO board with Windows, but doesn't explain at all what the purpose of each connection is. I have no clue how one would update the Bootloader, let alone send the firmware to the device.
EDIT: I have the FTDI driver installed properly and avrdude does run from terminal. I haven't used it in a long time, but even then I followed step by step instructions without a clue as to what I was doing.
Any eta on having mode 3 preinstalled for production units? I may put the Mk3 I just bought on another printer if I can get this (Don't have an Arduino so no way to load myself atm). But I would like to implement this so I can have the Chameleon mounted to the back of my P1P and a single longer ptfe tube running into the printer through the back.
I've updated the parent thread to include the new 3.1 firmware. This firmware adds one more mode of operation, Mode 3. Pressing for 10 pulses cycles through modes 1, 2 and now 3. Mode 1 and 2 are unmodified (with Mode 2 being the default.) Mode 3 is very similar to Mode 2, except for that it requires you to press the button for the entire time you want the filament to load or unload. This allows you to have the Y adapter any arbitrary distance from the extruder/hotend. Your gcode would press the button, wait for your programmed amount of time, using the G4 S{seconds} command, which will tell the 3D Chameleon to load/unload for that distance in time (1 second = 1 inch = 2.5 cm.)
To enable it... just press the button until you get 10 pulses and a response of 3 vibrates. To switch to any color, press the button for that number of pulses... the selector will move to the previous color and wait. It's waiting for you to press the button to start the motion, and it will continue that motion until you release the button. The selector will then move the new color to load and again, pause... waiting for you to press the button a final time for the full duration of the loading. You must time this sequence to coincide with your extruder loading, so that they both occur for about 1" to get a good proper load.
I'll be making a video of it later this week.
Bill
Very excited about this new firmware!
Hi Bill, I have the MK2 and would like to upgrade to the MK3 including the new firmware. Can you put together a kit including the MK3 parts upgrade and the control board preprogramed with the new firmware. I do not have the parts or expertise to do the firmware myself. I'm in Canada. Thanks
Here's a PDF document on how to do the firmware upgrade on the 3D Chameleon's electronics using an Arduino. Many thanks to Laurence Bang for putting this together!
Also, if you need to revert to the Mk2 firmware, you can download this file and use the same command as above, but reference the Mk2 file instead. Bill