I apologize if I don't immediately give important info, I'm very new to arduino's/circuity of any kind. I'll try to include as much info as possible.
Some preface: I'm currently working on a project that generates electricity using TEG's (Thermoelectric generator). The setup I currently have is able to output upwards of 9V. The motor I'm using is able to run when directly connected to the TEG wires, sp they produce enough electricity to work. Due to the nature of the project, a stopping mechanism is being used via a photoresistor and an LED. Essentially when the light signal picked up by the photoresistor is low enough, power is cut to the motor.
So up until recently, the motor and the Arduino board/motor shield (Arduino UNO, Arduino Motor Shield Rev3) were being run using a 9V battery. Everything worked correctly, the motor would start when needed and stop when needed. Once I switched to the TEG's the set up stopped working (motor stopped running). What is weird is that if I connect a voltmeter to channel 1 of the motor shield, I read 6V-7V (some voltage drop but not drastic) when the LED was on and 0 when the led was off. So everything seemed to still be working, but the motor itself just won't actually run. In fact, when the LED is on, it makes a very faint noise for a second but doesn't run.
The only thing I can think of is that the current being produced by the TEG's is only enough to power the motor when directly connected, but when wired indirectly through the board thus powering the board, it no longer has enough amperage.
I included the code I wrote for it, which worked fine with a 9V battery powering the motor/board.
const int sensorPin = A5;
const int ledPin = 5;
int lightLevel;
void setup(){
Serial.begin(9600);
pinMode(12,OUTPUT);
pinMode(9,OUTPUT);
pinMode(ledPin, OUTPUT);
}
void loop(){
lightLevel = analogRead(sensorPin);
lightLevel = constrain(lightLevel, 0, 800);
Serial.println(lightLevel);
if(lightLevel < 200){
digitalWrite(9,LOW);
digitalWrite(12,HIGH);
analogWrite(3,255);
}
if(lightLevel > 200){
digitalWrite(9,HIGH);
analogWrite(3,0);}
}