Tumgik
#pwma
gentlemans-code20 · 7 months
Text
Tumblr media
#ProductPick – GreenWorks Electric Pressure Washer
Greenworks PRO 2300 PSI TruBrushless (2.3 GPM) Electric Pressure Washer (PWMA Certified)
0 notes
paulsonflower · 1 year
Text
Tumblr media
Sarah Paulson via Instagram Story- January 3rd, 2023
Post shared: https://www.instagram.com/p/Cm9ruA-pWMA/?igshid=MWI4MTIyMDE=
1 note · View note
wohumicub · 2 years
Text
Universal studios theme song mp3 mode d'emploi
 UNIVERSAL STUDIOS THEME SONG MP3 MODE D'EMPLOI >>Download vk.cc/c7jKeU
  UNIVERSAL STUDIOS THEME SONG MP3 MODE D'EMPLOI >> Read Online bit.do/fSmfG
            Modes d'emploi pour Mpman Lecteurs Mp3. Ci-dessous vous trouverez tous les modèles de Mpman Lecteurs Mp3 pour lesquels nous avons des manuels disponibles. Consultez également les questions fréquemment posées au bas de la page pour obtenir des conseils utiles sur votre produit. Votre modèle n'est pas sur la liste ? Listen on Spotify: Music from Rides, Shows, and Movies you hear in all Universal Studios Theme Parks & Resorts. Michael Dietrich · Playlist · 47 songs · 6.6K likes. Listen on Spotify: Music from Rides, Shows, and Movies you hear in all Universal Studios Theme Parks & Resorts. Michael Dietrich · Playlist · 47 songs · 6.6K likes. Sign up Log in. Home; Search; Your Library. Create Playlist No Copyright Infringement intended. Universal Studios Music©.
https://www.tumblr.com/wohumicub/698576302850048000/pyle-pwma-1090ui-manuel-mode-demploi, https://www.tumblr.com/wohumicub/698576302850048000/pyle-pwma-1090ui-manuel-mode-demploi, https://www.tumblr.com/wohumicub/698576302850048000/pyle-pwma-1090ui-manuel-mode-demploi, https://www.tumblr.com/wohumicub/698576302850048000/pyle-pwma-1090ui-manuel-mode-demploi, https://www.tumblr.com/wohumicub/698576302850048000/pyle-pwma-1090ui-manuel-mode-demploi.
0 notes
mainsmgmt · 2 years
Text
3000 psi electric pressure washer
Tumblr media
With 3000PSI of power and a flow rate of 2.4GPM, this pressure washer will make short work of any cleaning job. The WHOLESUN 3000PSI Electric Pressure Washer high-pressure cleaner is perfect for cleaning cars, homes, driveways, and patios with ease. In addition, the Greenworks pressure washer features better than gas performance, thanks to its heavy-duty cast aluminum axial cam pump. It is also PWMA certified (Pressure Washer Manufacturers‘ Association), meaning that all water pressure (PSI) and flow rate (GPM) claims have been tested and verified by an independent lab. This machine is powered by a 14 Amp TruBrushless motor that generates 3000 PSI and 2.0 GPM for maximum cleaning power. If you’re looking for the most powerful and efficient pressure washer on the market, look no further than the Greenworks 3000 PSI (2.0 GPM) TruBrushless Electric Pressure Washer (PWMA Certified). Plus, the TSS (Total Stop System) automatically shuts off the pump when the trigger is not engaged – saving energy and prolonging the life of the pump. With two 0.9L onboard detergent tanks, you can easily carry and store different types of detergent to simultaneously tackle different cleaning projects. The Sun Joe SPX3000 unit boasts a 14.5-amp/1800-watt motor that delivers up to 2030 PSI of initial water pressure – perfect for tackling a variety of cleaning tasks around the home, office, or workshop. With all these features and more, the AR Blue Maxx BM 3000 is perfect for tackling all your toughest cleaning jobs. The 25' high-pressure hose provides plenty of reach, while the two-wheel trolley makes transport a breeze. Quick connect fittings make it easy to attach nozzles and attachments, and the included foam cannon ensures sudsing action for even better cleaning results. The 1.3 GPM flow rate provides ample cleaning power, while the 15 AMP motor handles tough jobs with ease. This unit delivers 3000 PSI of force for quick, efficient cleaning of driveways, decks, siding, and more. Experience high-powered cleaning with the AR Blue Maxx BM 3000 Electric Pressure Washer.
Tumblr media
0 notes
cornerstorebitch · 3 years
Text
i hate that i keep aging i wish i couldve been 20 forever. nice even number
5 notes · View notes
randombubblegum · 2 years
Note
also apparently it's a thing here (nj/pa) to pronounce words with or in them the "wrong way" ??? for example, most people would say ore-inge or hore-er but i guess a lot of us tend to say like. arr-inge or harr-er ???? (including gerard lol shoutout)
this mini-thread might help explain what i mean https://twitter.com/endofthingz/status/1402808161661247489?s=20&t=nJDZP8fIJgM01_mRs-PWmA
Tumblr media
LMAOSOPAJDKSK………. ok but now that youve pointed that out i actually see it LMAOOO that very nasally “awr” sound instead of “or” especially in nj/south of nyc……. im kind of obsessed tbh i feel like every accent has one or two vowel sounds that totally give them away
7 notes · View notes
Photo
Tumblr media
I see your #truecolors and that's why i love you guys 💖 #graduation #pwma #ceweunyu #pink #batik #inspirasikebayamodern #inspirasikebayamuslim
0 notes
Hose vs Power Washer - Which one prevails?
So you want to clean your deck, driveway or gutter. Your first inclination is probably to use your own hose. It’ll eventually get the job done. But is this method really as convenient as it sounds? What if the substances are tougher than initially thought, is it even worth cleaning at that point? Why not get replacements?
There are many misconceptions about the use of pressure washers, namely the notion that they aren’t necessary or worth a greater value for even a small job. Some even believe using a garden hose to be the cheapest and quickest way to clean the exterior of their house. What may surprise many though, is the fact that pressure washers use 75% less water than a hose would on average. Due to it’s high-pressure, and it’s wide array of meticulously crafted nozzles, a pressure washer is specifically designed to efficiently wash away dirt, moss, gum or any other hard to clean substance without the waste of water. Regardless of the shape or size of the surface in question.
What about the contents of the pressure washer? A hose just has pure water, aren’t pressure washers filled with chemicals that harm the environment? According to the PWMA, standards ensure that only “pressure washer safe” chemicals are to be used. Thus, a majority of pressure washing companies only use biodegradable detergents or at times no detergents at all.
All things considered, there’s no doubt that power washing is a much more affordable and environmentally safer option for cleaning gunky messes in hard to reach areas. 
If you find yourself in a situation where you need these services done quick at an affordable price, come visit our site. We provide some of the most reliable, spotless results, with over 15 years of experience, serving the Severna Park and the Anne Arundel County. Help make Southern Maryland cleaner, and greener! https://www.annapolisbrotherspowerwashing.com/ Annapolis Brothers Power Washing
166 Friar Tuck Hl, Annapolis, MD 21405
Call us: 410-571-4121
1 note · View note
wohumicub · 2 years
Text
Pyle pwma 1090ui manuel mode d'emploi
 PYLE PWMA 1090UI MANUEL MODE D'EMPLOI >>Download vk.cc/c7jKeU
  PYLE PWMA 1090UI MANUEL MODE D'EMPLOI >> Read Online bit.do/fSmfG
            , , , , .
1 note · View note
seeksredempticn · 5 years
Text
i WILL NOT LEAVE this blog, but in case it DOES get deleted by the staff as some blogs were, or if you leave, this is where you can find me.
add me on discord: Evie (PWMA) #0217
kik me: punkwithametalarm
i'll create a pillowfort under the same url as here, if it's available
3 notes · View notes
Photo
Tumblr media
#RTV_NOTICIAS_CHILE HOMBRE SE NIEGA A "EL QUE BAILA PASA": HABRÍA AGREDIDO A ADULTO MAYOR Y LE CONTESTARON CON GOLPES Un hombre que se negó a realizar “el que baila pasa” en Valdivia habría agredido a un adulto mayor, lo que provocó que los manifestantes le respondieran a golpes. El puente Pedro de Valdivia fue bloqueado cerca de las 21:00 horas de este martes por un grupo de manifestantes, los que comenzaron a realizar “el que baila pasa”. En ese contexto, un conductor se negó, por lo que se habría bajado con un palo y agredido a un adulto mayor. Los manifestantes le respondieron a golpes. Después de los momentos de tensión, que quedaron registrados en un video, el automóvil se fue. Tras ello Fuerzas Especiales de Carabineros dispersó a los manifestantes, aunque una vez que los funcionarios se retiraron un grupo de una docena de personas volvió a bloquear la pasada. RBB https://www.instagram.com/p/B5ErOY-pwMa/?igshid=nbgc3j4e8440
0 notes
Text
Can’t work it out. Got two electomagnets working but unable to make them repel despite the motor driver switching their polarities (supposedly)
Arduino code:
//motor A connected between A01 and A02 //motor B connected between B01 and B02
int STBY = 10; //standby
//Motor A int PWMA = 3; //Speed control int AIN1 = 9; //Direction int AIN2 = 8; //Direction
//Motor B int PWMB = 5; //Speed control int BIN1 = 11; //Direction int BIN2 = 12; //Direction
const int buttonPin = 2;     // the number of the pushbutton pin int buttonState = 0;         // variable for reading the pushbutton status
void setup(){ pinMode(STBY, OUTPUT);
pinMode(PWMA, OUTPUT); pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT);
pinMode(PWMB, OUTPUT); pinMode(BIN1, OUTPUT); pinMode(BIN2, OUTPUT);
// initialize the pushbutton pin as an input:  pinMode(buttonPin, INPUT); pinMode(LED_BUILTIN, OUTPUT); //led built in arduino
}
void loop(){  // read the state of the pushbutton value:  buttonState = digitalRead(buttonPin);
 // check if the pushbutton is pressed. If it is, the buttonState is HIGH:  if (buttonState == HIGH) {    // turn LED on:    digitalWrite(LED_BUILTIN, HIGH);    delay(200);    digitalWrite(LED_BUILTIN, LOW);    delay(200);    digitalWrite(LED_BUILTIN, HIGH);
   //turns on magnet    move(1, 200, 1); //motor 1, full speed, left 128    move(2, 200, 0); //motor 2, full speed, left 128    delay(1000); //go for 1 second
   digitalWrite(LED_BUILTIN, HIGH);    delay(200);    digitalWrite(LED_BUILTIN, LOW);    delay(200);    digitalWrite(LED_BUILTIN, HIGH);    stop();    delay(1000); //go for 1 second    //turns on magnet    move(1, 200, 0); //motor 1, full speed, left 128    move(2, 200, 1); //motor 2, full speed, left 128
   delay(1000); //go for 1 second
   digitalWrite(LED_BUILTIN, HIGH);    delay(200);    digitalWrite(LED_BUILTIN, LOW);    delay(200);    digitalWrite(LED_BUILTIN, HIGH);
   stop();    delay(1000); //go for 1 second
   move(1, 200, 1); //motor 1, full speed, left 128    move(2, 200, 1); //motor 2, full speed, left 128    delay(1000); //go for 1 second
   digitalWrite(LED_BUILTIN, HIGH);    delay(200);    digitalWrite(LED_BUILTIN, LOW);    delay(200);    digitalWrite(LED_BUILTIN, HIGH);
   stop();    delay(1000); //go for 1 second    //turns on magnet    move(1, 200, 0); //motor 1, full speed, left 128    move(2, 200, 0); //motor 2, full speed, left 128
   delay(1000); //go for 1 second
   digitalWrite(LED_BUILTIN, HIGH);    delay(200);    digitalWrite(LED_BUILTIN, LOW);    delay(200);    digitalWrite(LED_BUILTIN, HIGH);    stop();    delay(1000); //go for 1 second //digitalWrite(LED_BUILTIN, LOW); //turns on magnet
 } else {    // turn LED off:    digitalWrite(LED_BUILTIN, LOW);
   stop(); //if not pressed turn off?
 }
 /* move(1, 75, 1); //motor 1, full speed, left 128 move(2, 75, 1); //motor 2, full speed, left 128
delay(1000); //go for 1 second stop(); //stop delay(1000); //hold for 250ms until move again
move(1, 75, 0); //motor 1, half speed, right move(2, 75, 0); //motor 2, half speed, right
*/ //delay(1000); //stop();
}
void move(int motor, int speed, int direction){ //Move specific motor at speed and direction //motor: 0 for B 1 for A //speed: 0 is off, and 255 is full speed //direction: 0 clockwise, 1 counter-clockwise
digitalWrite(STBY, HIGH); //disable standby
boolean inPin1 = LOW; boolean inPin2 = HIGH;
if(direction == 1){ inPin1 = HIGH; inPin2 = LOW; }
if(motor == 1){ digitalWrite(AIN1, inPin1); digitalWrite(AIN2, inPin2); analogWrite(PWMA, speed); //don't think solenoids need speed? }else{ digitalWrite(BIN1, inPin1); digitalWrite(BIN2, inPin2); analogWrite(PWMB, speed); //^^^^ } }
void stop(){ //enable standby digitalWrite(STBY, LOW); }
Tutorials used: This one and this one
See next post for videos
0 notes
francisco-furr-blog · 5 years
Text
Our Code
//the right motor will be controlled by the motor A pins on the motor driver const int AIN1 = 13;           //control pin 1 on the motor driver for the right motor const int AIN2 = 12;            //control pin 2 on the motor driver for the right motor const int PWMA = 11;            //speed control pin on the motor driver for the right motor //the left motor will be controlled by the motor B pins on the motor driver const int PWMB = 10;           //speed control pin on the motor driver for the left motor const int BIN2 = 9;           //control pin 2 on the motor driver for the left motor const int BIN1 = 8;           //control pin 1 on the motor driver for the left motor int switchPin = 7;             //switch to turn the robot on and off const int driveTime = 20;      //this is the number of milliseconds that it takes the robot to drive 1 inch                               //it is set so that if you tell the robot to drive forward 25 units, the robot drives about 25 inches const int turnTime = 8;        //this is the number of milliseconds that it takes to turn the robot 1 degree                               //it is set so that if you tell the robot to turn right 90 units, the robot turns about 90 degrees                               //Note: these numbers will vary a little bit based on how you mount your motors, the friction of the                               //surface that your driving on, and fluctuations in the power to the motors.                               //You can change the driveTime and turnTime to make them more accurate String botDirection;           //the direction that the robot will drive in (this change which direction the two motors spin in) String distance;               //the distance to travel in each direction /********************************************************************************/ void setup() {  pinMode(switchPin, INPUT_PULLUP);   //set this as a pullup to sense whether the switch is flipped  //set the motor control pins as outputs  pinMode(AIN1, OUTPUT);  pinMode(AIN2, OUTPUT);  pinMode(PWMA, OUTPUT);  pinMode(BIN1, OUTPUT);  pinMode(BIN2, OUTPUT);  pinMode(PWMB, OUTPUT);  Serial.begin(9600);           //begin serial communication with the computer  //prompt the user to enter a command  Serial.println("Enter a direction followed by a distance.");  Serial.println("f = forward, b = backward, r = turn right, l = turn left");  Serial.println("Example command: f 50"); } /********************************************************************************/ void loop() {  if(digitalRead(7) == LOW)  {                                                     //if the switch is in the ON position    if (Serial.available() > 0)                         //if the user has sent a command to the RedBoard    {      botDirection = Serial.readStringUntil(' ');       //read the characters in the command until you reach the first space      distance = Serial.readStringUntil(' ');           //read the characters in the command until you reach the second space      //print the command that was just received in the serial monitor      Serial.print(botDirection);                            Serial.print(" ");                                      Serial.println(distance.toInt());                      if(botDirection == "f")                          //if the entered direction is forward                                {        rightMotor(200);                                //drive the right wheel forward        leftMotor(200);                                 //drive the left wheel forward        delay(driveTime * distance.toInt());            //drive the motors long enough travel the entered distance        rightMotor(0);                                  //turn the right motor off        leftMotor(0);                                   //turn the left motor off      }      else if(botDirection == "b")                     //if the entered direction is backward        {        rightMotor(-200);                               //drive the right wheel forward        leftMotor(-200);                                //drive the left wheel forward        delay(driveTime * distance.toInt());            //drive the motors long enough travel the entered distance        rightMotor(0);                                  //turn the right motor off        leftMotor(0);                                   //turn the left motor off      }      else if(botDirection == "r")                      //if the entered direction is right        {        rightMotor(-200);                               //drive the right wheel forward        leftMotor(255);                                 //drive the left wheel forward        delay(turnTime * distance.toInt());             //drive the motors long enough turn the entered distance        rightMotor(0);                                  //turn the right motor off        leftMotor(0);                                   //turn the left motor off      }      else if(botDirection == "l")                    //if the entered direction is left        {        rightMotor(255);                                //drive the right wheel forward        leftMotor(-200);                                //drive the left wheel forward        delay(turnTime * distance.toInt());             //drive the motors long enough turn the entered distance        rightMotor(0);                                  //turn the right motor off        leftMotor(0);                                   //turn the left motor off      }    }  }  else  {     rightMotor(255);                                  //turn the right motor off     leftMotor(255);                                   //turn the left motor off  } } /********************************************************************************/ void rightMotor(int motorSpeed)                       //function for driving the right motor {  if (motorSpeed > 0)                                 //if the motor should drive forward (positive speed)  {    digitalWrite(AIN1, HIGH);                         //set pin 1 to high    digitalWrite(AIN2, LOW);                          //set pin 2 to low  }  else if (motorSpeed < 0)                            //if the motor should drive backward (negative speed)  {    digitalWrite(AIN1, LOW);                          //set pin 1 to low    digitalWrite(AIN2, HIGH);                         //set pin 2 to high  }  else                                                //if the motor should stop  {    digitalWrite(AIN1, LOW);                          //set pin 1 to low    digitalWrite(AIN2, LOW);                          //set pin 2 to low  }  analogWrite(PWMA, abs(motorSpeed));                 //now that the motor direction is set, drive it at the entered speed } /********************************************************************************/ void leftMotor(int motorSpeed)                        //function for driving the left motor {  if (motorSpeed > 0)                                 //if the motor should drive forward (positive speed)  {    digitalWrite(BIN1, HIGH);                         //set pin 1 to high    digitalWrite(BIN2, LOW);                          //set pin 2 to low  }  else if (motorSpeed < 0)                            //if the motor should drive backward (negative speed)  {    digitalWrite(BIN1, LOW);                          //set pin 1 to low    digitalWrite(BIN2, HIGH);                         //set pin 2 to high  }  else                                                //if the motor should stop  {    digitalWrite(BIN1, LOW);                          //set pin 1 to low    digitalWrite(BIN2, LOW);                          //set pin 2 to low  }  analogWrite(PWMB, abs(motorSpeed));                 //now that the motor direction is set, drive it at the entered speed }
0 notes
kpmgtoday · 5 years
Text
Hong Kong&#39;s anxious wealth managers
The fourth annual PWMA-KPMG report is largely based on an online survey of 33 member organisations of the PWMA, as well as 29 interviews with ... Delivered by KPMG Today (@KPMG_TO) Read more here Follow @KPMG_TO on Twitter to get latest updates
0 notes
sheilacwall · 5 years
Text
4tress – Érezni Kell Ft. Bigmek ( Official Music Video )
© 4tress – Érezni kell Ft. Bigmek, 2019 Single Track
A feliratkozáshoz kattints a linkre: https://goo.gl/FXxY3R
4tress INSTAGRAM: https://instagram.com/iam4tress Bigmek INSTAGRAM: https://instagram.com/bigmek_official
MPRINT: https://www.mprint.hu/ | http://instagram.com/mprint.hu
Produced by Strangedrumz, Buck Beatz (https://instagram.com/strangedrumz0) Scratch: Dj Span | Karcosok Klubja | (https://instagram.com/dj_span) Mix,Master: 4tress, Skanna Beat (https://instagram.com/skanna_b) Videóklip: Liszkai Gábor (https://facebook.com/gaborl | https://instagram.com/gabor_liszkai | YOUTUBE: https://tinyurl.hu/pwmA/ )
Fellépésszervezés: +3670-881-6273 | [email protected]
4tress Facebook: https://facebook.com/iam4tress Mocskos Márka Instagram: https://instagram.com/mocskosmarka Mocskos Márka Facebook: https://facebook.com/mocskosmarka
A dal megvásárolható az alábbi Digital Store-okban: Deezer: https://tinyurl.hu/28wY/ Spotify: https://tinyurl.hu/GYi2/ Apple music: https://tinyurl.hu/tNpo/ iTunes: https://tinyurl.hu/JRIq/ Google play: https://tinyurl.hu/397n/
Dalszöveg:
/Intro: Scratch/ Strangedrumz, 4tress, Mocskos Márka, Bigmek, Bloose Broavaz
/Chorus 2x/ Nekem a zene nem hobbi – életvitel Ezt nem lehet tanulni – érezni kell Amíg te alszol, én a vasat ütöm Kifújok egy zenét ha meg telik a tüdőm
/4tress/ Jobb ha megjegyzed, a dupla M vegyjel A családom a Márka és az árral megy szembe A színpadon reakcióba lép a munkával A rabja lettem – ez véget nem érő túszdráma Ütemre ver a szív, a véremben van a rap Ahogy a hitelességünk, a siker sem marad el Nekem ez mindenem, hiába várod nem tágítok A tettek beszélnek nem a szájkarate BP – Biggalo – Dunanewshit Comin’ – Berobban a tribün mint a szlengünk a kazin – Leoktat a hitünk, minőséget terítünk Ennek hallatán minden hallójárat megszelídül A semmiből jövök és mindent viszek Mert még egy ilyen flow-ja nincs senkinek Mindennél fontosabb az egyediség – Igen De ha bennem lángol a tűz, az benned is ég – Hey –
/Chorus 2x/ Nekem a zene nem hobbi – életvitel Ezt nem lehet tanulni – érezni kell Amíg te alszol, én a vasat ütöm Kifújok egy zenét ha meg telik a tüdőm
/Bigmek/ A zene volt már a hobbim, volt már a munkám Volt már a szerelmem, volt már a kurvám Most már a múzsám, erővel tölt fel Olyan mint egy jó drog: Mindig csak több kell Ez nem Top Secret, hanem Toxic Rap És a füleden át egészen a Detoxig megy Nekem a Hip Hop általános suli óta méreg A melóban megdöglök, a stúdióban élek – Füles fel – Még mindig a telep nevel Minden gondom a mikrofonba temetem el Vegyed meg a sikert, nekünk érzés kéne A tehetség nem lesz soha pénz kérdése Ég a sok kam’ mintha kerozin volna Mikor nyomom a dobhártya is erogén zóna Élvezd a dalom – ez egy igen jó tipp Legyen az életem mától egy videóklip
/Chorus 2x/ Nekem a zene nem hobbi – életvitel Ezt nem lehet tanulni – érezni kell Amíg te alszol, én a vasat ütöm Kifújok egy zenét ha meg telik a tüdőm
#4tress #bigmek #éreznikell source
The post 4tress – Érezni Kell Ft. Bigmek ( Official Music Video ) appeared first on Hip Hop World Music.
from Hip Hop World Music https://hiphopworldmusic.com/4tress-erezni-kell-ft-bigmek-official-music-video/?utm_source=rss&utm_medium=rss&utm_campaign=4tress-erezni-kell-ft-bigmek-official-music-video from Hip Hop World Music https://hiphopworldmusic.tumblr.com/post/187483751368
0 notes
markjsaterfiel66 · 6 years
Text
Hackbot in the Morning
I love coming in to work early; normally I get in around 6:45 a.m. Very few people are here at that time, and the ones that are? They get it. It’s about as close to freedom a working adult can expect.
On a particularly quiet morning very recently, I found myself thinking, “I’ve never made a bot with a Pi… isn’t that one of the things that everybody’s gotta do sooner or later? I wonder what it takes to actually get something up and running.”
So I decided that, with minimal effort and materials expended, I would give it a shot while there was nobody here to tell me otherwise – nothing fancy, just a platform that’ll drive around, to which I can ultimately attach more junk (it started with some junk reclaimed from other projects). Check the end of this post for a consolidated list of items used.
I started off with a Raspberry Pi 3 I mounted to an acrylic plate to try to give it some weight to hold it down when there’s a slew of cables stuck in it. I hit my pile of junk in my basement for more parts… and I came across this old project:
That there (above) is the remains of my “Little Dude” project I did a video for a while back, using servo wheels glued together as pulleys… good times, good times… Anyway, that’s a pair of gear motors (ratio unknown, whatever - let’s rock!) wired up to a TB6612 dual-channel motor driver good to 1.2A per channel. Sweet! This bot was just about building itself!
I figured could mount the motors and driver directly onto the acrylic with hot glue, although if anything got too hot, it would fall off. I decided to just really gum up the motors so any heat couldn’t melt all of the hot glue and stick to the edges of the driver board. This bot wouldn’t be drawing that much current. If I remember right the stall current on the motors is around 330mA, and we’ll be nowhere near that driving this little beastie around the office.
When it came to power, for initial testing I’d have to have all the cables and junk plugged in anyway, but Hackbot needed localized life support if he’s eventually going to romp free… not to mention headless operation. I could have started it with all the junk plugged in, then yank the keyboard, mouse and monitor out and set it on the floor, but that was definitely a short-term solution. I let that part go while I got the rudidments in place. In the meantime, I had to make a little regulator circuit with a 7805 – that should be good to an amp and a half, so it should cover me for the Pi and the motors. But a two-cell lipo is about 8.4V fully charged, and at a guess I’ll maybe draw 500mA average (totally ballparking here), giving me (8.4V - 5V)*0.5A = 1.7W to dissipate on that TO220. It would probably get hot unless I heatsink it.
Programming this in Python was easy enough, as it’s just GPIO manipulation. I wasn’t going to try and PWM the motor driver, as I had the gear motors and I knew they were slow. If they were faster, I might have had to worry about feeding them PWM to control the speed.
I then created a wiring diagram of sorts:
The hookup was simple enough. Each channel on the TB6621 is driven by three pins: [A/B]IN1 and [A/B]IN2, which determine the direction, and PWM[A/B], which allows you to adjust the speed of the channel through a PWM signal applied here. There’s also a standby signal (STBY) that will enable/disable both channels. That’s seven lines total, and they all get a GPIO line.
Running motor power through the RasPi wasn’t really the smartest thing I could do, but 1) the motors were originally rated for 6V and the lipo’s going to be more, and 2) I bet it wouldn’t be a problem at this stage, (though I wondered if I’d get motor noise back to the RasPi). Checking the TB6621 datasheet showed lots of noise-suppressing diodes on the motor outputs. Clearly, destiny wanted me to do this.
There were still a couple of things I needed to make this viable: wheels and a caster. Oh sure, I could have used those hot-glued servo wheels that were originally on the motors (check the first pic above) for some extra jank-factor. But I felt like I was already up against enough sketchy design, so I just bought them. Pro tip: that caster is a little tight at first. You can loosen it up by clamping that ball between the plastic with a pliers and giving it a little squeeze (not too much, as you can’t un-squeeze it).
After some hot glue magic plus a minimum of wiring, the bottom of Hackbot looked like this:
The top looks like this:
Now I had the physical platform close, but I still had to make a little regulator board. I figured it really didn’t need to be anything special, just an L7805 regulator, plus an electrolytic cap of 100uF or so on the output oughta do it. I gave it a two-pin male header to plug into the two-cell lipo, and snatched a micro USB plug from some unsuspecting cable to connect to the 5V out.
Then I mounted it on one of the stand-offs holding the RasPi down.
Another view:
The PCB that the regulator is mounted on is from an old product line of shaped PCB’s that we used to have, that one being a pentagon. It was lying around, so I used it. The idea here was that the battery will sit on top of the RasPi in some fashion (I can work out the specifics later) while plugged into that two-pin male header you see there.
From there, I turned to code. There’s definitely more junk to add, but that’s for another day. The car’s got wheels, right? Let’s go driving!
#Hackbot.py #Just a little test code to run around the floor a bit import RPi.GPIO as GPIO import time #a couple of delay constants leg = 2 turn = 0.5 #set up control pins for motor driver STBY = 31 AIN1 = 33 AIN2 = 35 PWMA = 37 BIN1 = 32 BIN2 = 36 PWMB = 38 GPIO.setmode(GPIO.BOARD) #use board pin numbers #set the GPIO's to outputs GPIO.setup(STBY, GPIO.OUT) GPIO.setup(BIN1, GPIO.OUT) GPIO.setup(AIN1, GPIO.OUT) GPIO.setup(AIN2, GPIO.OUT) GPIO.setup(BIN2, GPIO.OUT) GPIO.setup(PWMA, GPIO.OUT) GPIO.setup(PWMB, GPIO.OUT) #set initial condiions, STBY #is low, so no motors running GPIO.output(STBY, GPIO.LOW) GPIO.output(AIN1, GPIO.HIGH) GPIO.output(AIN2, GPIO.LOW) GPIO.output(PWMA, GPIO.HIGH) GPIO.output(BIN1, GPIO.HIGH) GPIO.output(BIN2, GPIO.LOW) GPIO.output(PWMB, GPIO.HIGH) #movement is governed by the 4 #following functions. These will #go into their own library, ultimately. def go_forward(run_time): GPIO.output(AIN1, GPIO.LOW) GPIO.output(AIN2, GPIO.HIGH) GPIO.output(BIN1, GPIO.LOW) GPIO.output(BIN2, GPIO.HIGH) GPIO.output(STBY, GPIO.HIGH) #start time.sleep(run_time) GPIO.output(STBY, GPIO.LOW) #stop def turn_left(run_time): GPIO.output(AIN1, GPIO.HIGH) GPIO.output(AIN2, GPIO.LOW) GPIO.output(BIN1, GPIO.LOW) GPIO.output(BIN2, GPIO.HIGH) GPIO.output(STBY, GPIO.HIGH) #start time.sleep(run_time) GPIO.output(STBY, GPIO.LOW) #stop def turn_right(run_time): GPIO.output(AIN1, GPIO.LOW) GPIO.output(AIN2, GPIO.HIGH) GPIO.output(BIN1, GPIO.HIGH) GPIO.output(BIN2, GPIO.LOW) GPIO.output(STBY, GPIO.HIGH) #start time.sleep(run_time) GPIO.output(STBY, GPIO.LOW) #stop def reverse(run_time): GPIO.output(AIN1, GPIO.HIGH) GPIO.output(AIN2, GPIO.LOW) GPIO.output(BIN1, GPIO.HIGH) GPIO.output(BIN2, GPIO.LOW) GPIO.output(STBY, GPIO.HIGH) #start time.sleep(run_time) GPIO.output(STBY, GPIO.LOW) #stop #Then we make a simple driving patern and loop try: while True: #go forward go_forward(leg) #turn right? turn_right(turn) #go forward go_forward(leg) #turn right? turn_right(turn) #go forward go_forward(leg) #turn left turn_left(turn) #go forward go_forward(leg) #turn left turn_left(turn) #reverse reverse(leg) except KeyboardInterrupt: GPIO.cleanup()
To run this, I powered the Pi from my two-cell lipo with all the cables plugged in, just long enough to open a terminal window and run that code. Then, I quick-like yanked all the cords out, put it on the floor and let-r-rip!
Look at that thing lay it down! Am I right?? Those motors are really slow, and we don’t sell that particular one anymore. I want to say they’re geared 300:1…? Or maybe 300RPM? The concept is hereby proven, and I can change those motors out if I really want to.
Things I could have done better
1) Like I knew it would, the regulator gets hot. Not so hot that I can’t touch it, but I don’t want to for very long. The current draw is around 315mA sitting idle, and around 500mA-ish when we’re driving around, so it’s dissipating over 1.5W when driving. That’s a bit much for a TO-220 package by itself, so I should put a hunk of metal on it.
2) Running motor current through the Pi, while convenient for today, is kinda dumb for the long term. I can get away with it for now because the motor current is relatively low, but the current path between the USB plug and 5V on the header is in no way designed to do this. I should really run the motor voltage directly from the regulator.
3) Headless operation: plugging cables in and out to do this is no good. Pinocchio wanted to be a real boy; so does Hackbot.
4) Hot glue. You know what? The hot glue is working for me. Saved me a ton of time.
Those are the things that gotta happen before anything else gets added. What to add?
What comes next
There’s a bunch of GPIO left available on the Pi header, including SPI, I2C and UART interfaces, so there’s a lot of room for adding junk. I can’t add anything particularly analog, but I don’t think I need to. But anything with a digital interface is fair game – distance/proximity sensors, GPS, environmental sensors… it just depends on what your ultimate goal is, or what sensors you want play with. This would make an interesting mobile test platform for new gear.
For myself, I’m less about getting tiny bots to do my will, and more about, “That thing is sweet! I wish I was two inches tall so I could get in and drive!” So it’ll probably get a camera at some point, probably an OSD to keep me updated with various info. Then LEDs, Troll hair, googly eyes…
Recap: Materials Used
To extricate the list from my story-telling style:
added to your cart!
Break Away Headers - Straight
In stock PRT-00116
A row of headers - break to fit. 40 pins that can be cut to any size. Used with custom PCBs or general custom headers.
$1.50
20
Favorited Favorite 81
Wish List
added to your cart!
Raspberry Pi 3
27 available DEV-13825
Everyone knows and loves Raspberry Pi, but what if you didn't need additional peripherals to make it wireless. The Raspberry …
$39.95
92
Favorited Favorite 91
Wish List
added to your cart!
SparkFun Motor Driver - Dual TB6612FNG (1A)
Out of stock ROB-14451
The TB6612FNG Motor Driver can control up to two DC motors at a constant current of 1.2A (3.2A peak). Two input signals (IN1 …
$4.95
1
Favorited Favorite 7
Wish List
added to your cart!
Voltage Regulator - 5V
In stock COM-00107
This is the basic L7805 voltage regulator, a three-terminal positive regulator with a 5V fixed output voltage. This fixed reg…
$0.95
3
Favorited Favorite 30
Wish List
added to your cart!
Lithium Ion Battery - 1000mAh 7.4v
In stock PRT-11855
This high discharge LiPo is a great way to power any R/C, robotic, or portable project. This is an excellent choice for anyth…
$9.95
2
Favorited Favorite 2
Wish List
added to your cart!
Ball Caster Metal - 3/8"
In stock ROB-08909
This ball caster kit from Pololu includes a black ABS housing, a 3/8" diameter metal ball, two spacers (1/16" and 1/8" thick)…
$2.95
1
Favorited Favorite 4
Wish List
added to your cart!
Electrolytic Decoupling Capacitors - 100uF/25V
In stock COM-00096
Electrolytic decoupling capacitors 100uF/25V. These capacitors are great transient/surge suppressors. Attach one between the …
$0.35
Favorited Favorite 6
Wish List
added to your cart!
Micro Gearmotor - 130 RPM (6-12V)
Only 10 left! ROB-12281
These micro gearmotors are incredibly tough and feature full metal gears. They have a gear ratio of 210:1 and operate up to 1…
$12.95
Favorited Favorite 0
Wish List
added to your cart!
Wheel 32x7mm
In stock ROB-08901
This custom-designed plastic wheel from Pololu has a silicone tire measuring 1.26" (32 mm) in diameter and is designed to fit…
$6.95
Favorited Favorite 3
Wish List
Some reading you may appreciate
How to Solder: Through-Hole Soldering
This tutorial covers everything you need to know about through-hole soldering.
Favorited Favorite 37
TB6612FNG Hookup Guide
Basic hookup guide for the TB6612FNG H-bridge motor driver to get your robot to start moving!
Favorited Favorite 5
Python Programming Tutorial: Getting Started with the Raspberry Pi
This guide will show you how to write programs on your Raspberry Pi using Python to control hardware.
Favorited Favorite 8
comments | comment feed
0 notes