1. Introduction
Hi, today I want to share my Polaroid SX70 custom body shell with room for Li-Po battery!There is a product like this called PolaStudio Power KIT:
But as you can see it is very expensive for what it is. So I made a 3D model and simple circuit which also adds self timer!
- 300mA HV Li-Po (GNB LiPo 1S 300mAh 3.8V HV 60C)
- Li-ion/Li-Po USB-C charger (aliexpress)
- Boost converter MT3608 (to 6 V, aliexpress)
- switch (aliexpress)
- tact switch
- Attiny85 or Attiny45
- single WS2812b LED
- nickel strips
- some thin wires
Solder 3 wires to 3 nickel strips and using tape mount them here (right is +6 V, left is ground, middle is self timer):
You need to add contact for self timer in camera. The same way, nickel strip with wire connected to shutter contact (S1).
Schematics (yea, I know it is crap, but you camera guys aren't very good at electronics and schematics so I made it easy to understand :P)
4. Attiny Arduino code
You will need Adafruit NeoPixel library
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 3
#define BUTTON 4
#define SHUTTER 2
#define NUMPIXELS 1
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int timer = 0;
unsigned long timer_count = 0;
unsigned long last_v_read = 0;
long battery_v = 0;
boolean button_pressed = false;
boolean led_on = true;
void setup() {
#if defined (__AVR_ATtiny85__)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
// End of trinket special code
pinMode(BUTTON, INPUT_PULLUP);
//pinMode(SHUTTER, INPUT_PULLUP);
pinMode(SHUTTER, OUTPUT);
digitalWrite(SHUTTER, LOW);
pixels.begin();
pixels.setPixelColor(0, pixels.Color(0,0,0));
pixels.show();
}
void loop() {
if(timer < 2) show_battery();
else {
if(millis() - timer_count >= 500){
timer_count = millis();
timer -= 500;
if(timer == 0) {
digitalWrite(SHUTTER, HIGH);
delay(100);
digitalWrite(SHUTTER, LOW);
pixels.setPixelColor(0, pixels.Color(0,0,0));
pixels.show();
timer_count = 0;
timer = 0;
led_on = true;
}
if(led_on) {
if(timer > 3100) pixels.setPixelColor(0, pixels.Color(0,0,250));
else pixels.setPixelColor(0, pixels.Color(250,0,0));
}else pixels.setPixelColor(0, pixels.Color(0,0,0));
pixels.show();
led_on = !led_on;
}
}
if(digitalRead(BUTTON) == LOW && button_pressed == false){
button_pressed = true;
if(timer < 2) timer = 10000;
else timer = 0;
timer_count = 0;
led_on = true;
delay(100);
}
if(digitalRead(BUTTON) == HIGH && button_pressed == true){
button_pressed = false;
delay(100);
}
}
void show_battery(){
if(millis() - last_v_read > 1000) {
last_v_read = millis();
ADMUX = _BV(MUX3) | _BV(MUX2);
delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Convert
while (bit_is_set(ADCSRA,ADSC));
uint8_t low = ADCL;
uint8_t high = ADCH;
battery_v = (high<<8) | low;
battery_v = 1125300L / battery_v; // WSTĘPNA KALIBRACJA
battery_v -= 300;
if(battery_v >= 4200){
pixels.setPixelColor(0, pixels.Color(0,40,0));
} else if(battery_v >= 4150){
pixels.setPixelColor(0, pixels.Color(40,40,0));
}else if(battery_v >= 4100){
pixels.setPixelColor(0, pixels.Color(40,20,0));
}else {
pixels.setPixelColor(0, pixels.Color(40,0,0));
}
pixels.show();
}
}
Hello,
ReplyDeleteGreat Idea. is there a schematic without the Selftimer?
Hi, Just omit the Attiny part. Remove from schematics Attiny, WS LED and tact switch. You just need battery, switch, boost to 6V and charger.
Deletewell done it's really nice project! Sam gonna skip the Arduino part and selftimer also and I would like to know what size of with did you used? (3mm, 4mm, ?) and which usb c charger module did you used? because the link in the description is broken. many thanks!
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteHi! Well done with the mod! I’m trying to build this without the Attiny/self timer part. I’m currently using a 600mAh LiPo battery/80C but I get a humming/buzzing sound from the camera. Is my discharge rate too high? Also which usb-c charger module did you use? The link is broken.
ReplyDelete