As I mentioned in my previous post, my project student Kevin Chubb is developing tiny ultra low cost robots using a PIC12F microcontroller. One of the things that’s great about PICs is that they can source and sink relatively high current through their digital i/o pins. Kevin and I have been hoping that it might be possible to build a robot that powers its actuators directly from the microcontroller pins, so that was a big factor in choosing the PIC12F. Anyway, yesterday I received a package of tiny “coreless” motors in the post from AliExpress, so I’ve just carried out an experiment to see if they can be powered directly from the GPIO pins of a PIC12F.
I received two types of motors in yesterday’s delivery, but the ones I’m using in this experiment are these ones:
- 3v 70000RPM 0408 Coreless Motor Ultra Fast 4*8 mm Hollow Cup Motors ($4.10 for a packet of 10)
To begin with, I measured the current drawn by one of the motors when it was running unloaded at 3V, which turned out to be approximately 31 mA. Although that’s slightly higher than the rated pin current on the PIC12F (25 mA), I decided it was worth taking a chance and I set up an experiment with two of the motors connected directly to a PIC12F675. Here’s the video:
The complete code is used is shown below:
// // PIC12F675 example: motors on GP4 and GP5 // Written by Ted Burke - 20-4-2017 // // To compile: // // xc8 --chip=12F675 main.c // #include <xc.h> #pragma config FOSC=INTRCIO,WDTE=OFF,MCLRE=OFF,BOREN=OFF void main(void) { TRISIO = 0b11001111; // Make pins GP4 and GP5 outputs ANSEL = 0b00000000; // Disable all analog inputs while(1) { GP4 = 1; // Set pin GP4 high GP5 = 0; // Set pin GP5 low _delay(500000); // 0.5 second delay GP4 = 0; // Set pin GP4 low GP5 = 1; // Set pin GP5 high _delay(500000); // 0.5 second delay } }
