Weekly Updates
Week 0: 2/14 - 2/20
This week was mainly spent finishing lab 5 and finalizing logistics for the project
Changed the heating element to be an old electric kettle for a couple reasons (the parts page has been updated)
It heats up water faster than the heating element I was planning on getting
Less construction, I can just modify the kettle instead of building a steaming chamber
I can plug the kettle into a wall socket and control it with a relay board
Ordered parts I didn't already have (LED matrix displays and relay board)
Removed the kettle's handle and auto-shutoff mechanism
The kettle I will be using
My board with all the tested peripherals connected
Week 1: 2/21 - 2/27
This week I figured out which pins I need for all the peripherals and tested all but the LED matrix display boards on the STM32 board
I connected all the following peripherals at once in the following pins:
PB6 and PB7 (I2C) for the temp sensor, which was displayed on the LCD to verify
PA0 (center button) using an interrupt to toggle the PA2 pin connected to the relay board in output mode
I think I will just use the center button instead of an external button unless the board gets too crowded
PA1 using an ADC to convert the voltage across the potentiometer to digital
PE11 using PWM to control the servo motor based on the voltage across the potentiometer
I changed from a stepper motor to a servo motor because it is easier to control the servo (3 wires) and I don't need precise positioning for the motor
I also set up SysTick to be used for when I count down the remaining steaming time
I also ordered some more male-female and female-female wires since I ran out
Week 2: 2/28 - 3/6
This week I got the LED matrix display boards connected and began figuring out the logistics for building the steaming chamber
Set up SPI communication for the display boards
Wrote a function that displays input numbers and a colon, a function that displays "HEAT", and a function that displays "DONE" on the display boards
Cut the kettle in half
I plan to attach the temperature sensor to the rod along the side, since that touches the water
I also plan to create a "steaming basket" that will rotate the egg above the steaming area and back out once it is finished. This will replace the door system, since it is easier to build a box on top of the kettle than to try to cut metal that fits along the curves of the kettle
Removed the indicator LED from the project description, since I don't think it is very necessary
The display boards and a sketch of the basket mechanism
The kettle in half
The steaming basket and relay systems
Week 3: 3/7 - 3/13
This week I assembled the steaming basket mechanism and tested it with the motor. I used sheet metal for much of the construction, held together with heat-resistant epoxy.
Built a box with chicken wire on one side and one side open (where the egg will go)
Built a platform to cover the remaining half of the kettle with a hole cut out for steaming and a wall to cover the open side of the steaming basket
Attached a rod to the basket and the motor to be able to rotate it
Attached the basket + rod to the platform
Tested the motor with a weight inside the basket to simulate an egg
Wired the relay board to one plug on a power outlet (the other will power the STM32)
I also found that using the temperature sensor and the display boards on the same 5V line made the temperature sensor fluctuate widely, so I moved the temperature sensor to the 3V pin instead
Week 4: 3/14 - 3/20
This week I put everything together and tested the project
Cut a small hole in the side of the kettle to put the temp sensor in the path of the steam
Initially I put the sensor on the pipe that sticks up out of the water, but found that it not a good representation of the water's actual temperature. Since I was basically checking for when steam started coming up, putting the sensor above the hole where the egg would steam was a much better spot.
Wrote code to perform the steaming process
3 states - Idle, Heat, and Cook
Button sets a flag to transition to the Heat state from Idle (start), or Idle from Heat/Cook (cancel)
Idle state opens the basket and reads the potentiometer to update time on displays
Heat state reads temp and keeps relay on as long as the temp is below 100°C
Cook state closes the basket, reads temp and toggles relay to maintain 97-100°C, and decreases time each second
I had to write some code to close the basket slowly since the egg broke while the basket closed in one of the tests
Updated the overview, block diagram, and parts sections to better reflect the functionality of the project
The egg steamer in all its glory