TPL5110 questions

For other supported Arduino products from Adafruit: Shields, accessories, etc.

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
iesre
 
Posts: 273
Joined: Mon Jun 10, 2013 1:58 pm

TPL5110 questions

Post by iesre »

I am using a TPL5110 to power a Pro Mini system. Power is supplied through a 5V 300mA Polulu buck-down converter, which provides an output of 4.96V. I have set the delay resistor to around 29 kOhm, which gives a roughly two-minute interval between power-ups. During power on I read data from two channels of an ADS1115 A/D board and date/time from a RTC module. Then I write data to a microSD board and set a jumper connected from a digital pin on the Pro Mini to the DONE pin on the TPL5110 to HIGH.
This works perfectly well indoors with a 9-V wall wart supply to the buck-down converter. However, on a 6 D cell battery supply it triggers only a few power-ups and then stops. The battery supply voltage remains at about 8.8 V, plenty to power the buck-down converter. I do not understand the source of this intermittent operation of the TPL5110. Software problem? Hardware problem? Any ideas?
Here is the code:

Code: Select all

/*
  Connections on Pro Mini:
  "Done" to digital 5
  "DRV" to VCC
  See ads1115_test.
*/
#include <Wire.h>
#include <SD.h>
#include <SPI.h>
#include <RTClib.h>
#include <Adafruit_ADS1015.h>
Adafruit_ADS1115 ads(0x48); // default address is 0x48
RTC_DS1307 rtc;
float V0,V1;
//float V2,V3;;
//float DtoA=0.015625/1000.; 
float DtoA=0.007813/1000;
const int donePin=5,SDpin=10;   
File logfile;
char filename[]="LOG00000.CSV";
void setup() {
  //Serial.begin(9600);
  // Power is applied...
  pinMode(donePin,OUTPUT);
  digitalWrite(donePin,LOW); // power on
  //Serial.println("low power pin LOW");
  //Serial.begin(9600);
  Wire.begin(); rtc.begin();
  if (!rtc.isrunning()) {
    //Serial.println("RTC not running."); exit;
  }    
  //rtc.adjust(DateTime(__DATE__, __TIME__));
  //Serial.print("Initializing SD card...");
  pinMode(10,OUTPUT);
  if (!SD.begin(SDpin)) {
    //Serial.println("Card failed."); 
  delay(50);exit(0);}
  //Serial.println("card initialized.");
  ads.begin();
  //ads.setGain(GAIN_EIGHT); // full scale = 0.512 V 
  ads.setGain(GAIN_SIXTEEN);  
  int16_t adc0,adc1; // ADC reading produces 16-bit integers
  //int16_t adc2,adc3;
  adc0 = ads.readADC_SingleEnded(0);
  adc1 = ads.readADC_SingleEnded(1);
  //adc2 = ads.readADC_SingleEnded(2); 
  //adc3 = ads.readADC_SingleEnded(3); 
  V0 = adc0 * DtoA;
  V1 = adc1 * DtoA;
  //V2 = adc2 * DtoA;
  //V3 = adc3 * DtoA;      
  //Serial.print(adc0); Serial.print(" V0="); Serial.print(V0, 4); Serial.print(' ');
  //Serial.print(adc1); Serial.print(" V1="); Serial.print(V1, 4); Serial.print(' ');
  //Serial.print(adc2); Serial.print(" V2="); Serial.print(V2, 4); Serial.print(' ');
  //Serial.print(adc3); Serial.print(" V3="); Serial.print(V3, 4); Serial.print(' ');   
  //Serial.println();
  DateTime now=rtc.now();   
  logfile=SD.open(filename,FILE_WRITE);
  logfile.print(now.year()); logfile.print(',');
  logfile.print(now.month()); logfile.print(',');
  logfile.print(now.day()); logfile.print(',');
  logfile.print(now.hour()); logfile.print(',');
  logfile.print(now.minute()); logfile.print(',');
  logfile.print(now.second()); logfile.print(',');
  logfile.print(V0,5); logfile.print(',');
  logfile.print(V1,5); logfile.print(',');
  //logfile.print(V2,5); logfile.print(',');
  //logfile.print(V3,5); 
  logfile.println(); 
  logfile.flush();
  delay(250); logfile.close(); delay(250);
  digitalWrite(donePin,HIGH); // power off
  //Serial.println("low power pin HIGH");
}
void loop() {} 
Last edited by Franklin97355 on Mon Oct 23, 2017 6:34 pm, edited 2 times in total.
Reason: Added missing code tags. Please use code tags when posting code or logs to the forums. It preserves formatting and makes it easier for everyone to read the code. Click the code button above the reply box and past your code between the tags created.

User avatar
Franklin97355
 
Posts: 23911
Joined: Mon Apr 21, 2008 2:33 pm

Re: TPL5110 questions

Post by Franklin97355 »

What is the output of the buck converter when the device fails to start?

User avatar
iesre
 
Posts: 273
Joined: Mon Jun 10, 2013 1:58 pm

Re: TPL5110 questions

Post by iesre »

I don't know because I can't monitor it continuously. All I know is that it just stops working. Whenever I have tested the buck-down converter output it is just a hair under 5 V. Previously, I concluded that a TPL5110 failed because, i THINK, an adafruit "5 V" converter produced a voltage of about 5.2 V rather than 5 V. My current theory is that the TPL5110 is VERY sensitive to input voltage and very unforgiving about wiring it incorrectly even instantaneously. PERHAPS this is what happened. Currently I have replaced the original TPL5110 with a new one and I have been very careful about the connections. Right now it appears to be working. We will see...

User avatar
iesre
 
Posts: 273
Joined: Mon Jun 10, 2013 1:58 pm

Re: TPL5110 questions

Post by iesre »

My third attempt to use a TPL5110 appears to be working OK -- two samples are shot. What I THINK I have learned is that you CANNOT power this device with one of adafruit's buck-up or buck-up/down converters because (at least in this very low power application) they produce a voltage significantly above 5 V. This is problematic because such converters, which may produce an output of 5.2 V or so, are still within the limits for USB devices ( 5 V +/- 5% ?), so one is tempted to use them without thinking much about the implications for other devices. In the USB device context, the justification for the higher output voltage is to allow for some voltage drop along long power lines -- fair enough.
The Usage guide for the TPL5110 states that you should "not give it 9V power, use 3-5V only!" What actually appears to be the case is that ANY voltage above 5.0V will destroy this device! I am using a Polulu 5V buck-down converter that produces an output of about 4.95V. Note, BTW, that a Polulu buck-up/down converter produces a no-load output voltage of 5.15V, which I guess makes it also unsuitable for powering a TPL5110. (The power draw of a TPL5110 when it's "off" is only about 20 MICRO V, so it's essentially "no load.")
If I'm off base on any of what I've said here, please let me know. Otherwise, please change the TPL5110 documentation to warn users about this problem!

Locked
Please be positive and constructive with your questions and comments.

Return to “Other Arduino products from Adafruit”