Today began by investigating how to improve the wheels - this involved researching different tyre materials. I also prototyped the serial level converter circuit, and looked into the use of FreeRTOS on the AVR.
Tyres
There is a wealth of knowledge in the online mini-sumo community regarding tyre materials. As these competitions require robots which generate a large pushing force, a lot of research has been put into finding good, accessible tyre materials.
I came upon some friction coefficients here, which demonstrate that purpose-made tyres are quite good, while others can be inferior. I also came across guides on moulding tyres. It's worth noting that while O-ring tyres are potentially very cheap, and quite easy to use, O-rings are generally made to allow slippage in systems while maintaining a seal, rather than providing as much grip as possible. One account shows that a layer of silicone on a tyre provides a good increase in grip.
I plan to add tyres to Wheeliebot at some point in the near future - this will allow the wheel separation to be well defined, and may allow a substantial increase in grip to be achieved. This should reduce dead-reckoning errors, and may allow the robot to move around a bit faster. I'm currently toying with the idea of applying silicone bathroom sealant to the wheels, using the motors to turn them and a formed piece of plastic to get a consistent thickness and cross-section.
Serial Link
I got a MAX232A level converter from our friendly lab staff, and wired it up as per the datasheet. When I get round to it, I'll test the communication with the PC board using a simple program. I've started off with a simple 3-wire connection (TxD, RxD, GND). I've managed to get good results with this in the past, and it avoids having to write a bunch of flow control handling functions.
I'll need to write some routines to allow data to be sent and received on the serial link at the AVR end. Since there's plenty of SRAM, it would make sense to use circular buffers up to 256 bytes in length - this allows a lot of room for buffering text strings, etc, and can be reduced later if needed. 256 is a good length as the buffer indices can be stored in 8-bit variables.
FreeRTOS
I did a bit of digging to find out about FreeRTOS and try to make it work. The following information might be useful to someone.
I found a suitable version of port.c for various AVRs including the ATmega1284P which i'm using. I got it from here. I copied the stock config file for the ATmega323, and changed the configCPU_CLOCK_HZ to use the value of F_CPU, which is used by some of the AVR library code anyway. A quick search on Google showed that other folk had success using heap_1.c as the heap model for memory management on AVRs.
For now, I've not made it do anything - hopefully that will come soon.
No comments:
Post a Comment
Comments are moderated. Sometimes it might take me a long time to get round to it, so please be patient.