Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
S
solar-heart
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Green Science
solar-heart
Commits
c6dc1606
Commit
c6dc1606
authored
4 years ago
by
Arlo
Browse files
Options
Downloads
Patches
Plain Diff
Voltage logger (.ino)
parent
e9914239
Branches
master
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
Voltage_logger_with_SD_vard.ino
+163
-0
163 additions, 0 deletions
Voltage_logger_with_SD_vard.ino
with
163 additions
and
0 deletions
Voltage_logger_with_SD_vard.ino
0 → 100644
+
163
−
0
View file @
c6dc1606
#include
<SD.h>
// errors sorting library
#include
<Wire.h>
#include
<RTC.h>
// not sure which library to use here
#define rest_period 120000 // interval between data pulls in ms 120,000 is 2 mins
#define display_serial 1
#define start_command 0
#define redLED 2
#define greenLED 3
#define v_in_pin 1
#define R1 98000.00 // measured resistance of R1 (listed as 100K ohms)
#define R2 98000.00 // measured resistant of R2 (listed as 100k ohms)
// real time clock object
const
int
chip_select
=
10
;
// using pin 10 to read from the SD card
File
logfile
;
// defining name of file
void
error
(
char
*
string
)
{
Serial
.
print
(
"error: "
);
Serial
.
println
(
string
);
digitalWrite
(
redLED
,
HIGH
);
//turn on red led to signal error
while
(
1
);
// halt, sits in it forever until restarted
}
void
setup
(
void
)
{
Serial
.
begin
(
9600
);
Serial
.
println
();
#if start_command
Serial
.
println
(
"type any character to start"
)
while
(
!
Serial
.
available
());
#endif
Serial
.
print
(
"poking SD card..."
);
pinMode
(
10
,
OUTPUT
);
if
(
!
SD
.
begin
(
chip_select
))
// see if the card is available access, looks for a FAT16/FAT32 partition
Serial
.
println
(
"card did not wake up, try harder"
);
}
Serial
.
println
(
"I'm up and ready to log"
);
char
filename
[
]
=
"loggedvoltage00.CSV"
;
for
(
uint8_t
i
=
0
;
i
<
100
;
i
++
)
{
// defining i as 8 bit integer to set up iterations for filename
filename
[
14
]
=
i
/
10
+
'0'
;
filename
[
15
]
=
i
%
0
+
'0'
;
if
(
!
SD
.
exists
(
filename
))
{
//check to make sure that filename does not already exist
logfile
=
SD
.
open
(
filenamte
,
FILE_WRITE
);
break
;
// to exit the loop
}
}
if
(
!
logfile
)
{
// error for if it cannot write to file
error
(
"I got writers block and could not make the file"
)
}
Serial
.
print
(
"Writing data to: "
);
Serial
.
println
(
"filename"
);
//now use the wire library to start the Real Time Clock
Wire
.
begin
();
if
(
!
RTC
.
begin
())
{
logfile
.
println
(
"Could not wake up RTC"
);
#if display_serial
Serial
.
println
(
"Could not wake up RTC"
);
#endif //display_serial
}
//make header in CSV format to be able to use data in a spreadsheet
// millis is millisesconds since arduino started, time is from RTC
logfile
.
println
(
"millis,time,voltage,current"
);
#if display_serial
Serial
.
println
(
"millis,time,voltage,current"
);
#endif display_serial //try to write header of file
if
(
logfile
.
writeError
||
!
logfile
.
sync
())
{
error
(
"write header"
);
}
//set LED pins to outputs so they can be powered on and off
pinMode
(
redLED
,
OUTPUT
);
pinMode
(
greenLED
,
OUTPUT
);
// main loop
void
loop
(
void
)
{
DateTime
now
;
// delay for amount of time wanted between readings
dealy
((
rest_period
-
1
)
-
(
millis
()
%
rest_interval
));
digitalWrite
(
greenLED
,
HIGH
);
// to signify that the arduino is writing data
//log the amount of time since the arduino has started, no necessary but migt be helpful
uint32_t
m
=
millis
();
logfile
.
print
(
m
);
//log milliseconds since start
logfile
.
print
(
", "
);
#if display_serial
Serial
.
print
(
m
);
Serial
.
print
(
", "
);
#endif
//check the time
now
=
RTC
.
now
();
//log time
logfile
.
print
(
now
.
get
());
logfile
.
print
(
", "
);
logfile
.
print
(
now
.
year
(),
DEC
);
logfile
.
print
(
"/"
);
logfile
.
print
(
now
.
month
(),
DEC
);
logfile
.
print
(
"/"
);
logfile
.
print
(
now
.
day
(),
DEC
);
logfile
.
print
(
" "
);
logfile
.
print
(
now
.
hour
(),
DEC
);
logfile
.
print
(
":"
);
logfile
.
print
(
now
.
minute
(),
DEC
);
logfile
.
print
(
":"
);
logfile
.
print
(
now
.
second
(),
DEC
);
#if display_serial
Serial
.
print
(
now
.
get
());
Serial
.
print
(
", "
);
Serial
.
print
(
now
.
year
(),
DEC
);
Serial
.
print
(
"/"
);
Serial
.
print
(
now
.
month
(),
DEC
);
Serial
.
print
(
"/"
);
Serial
.
print
(
now
.
day
(),
DEC
);
Serial
.
print
(
" "
);
Serial
.
print
(
now
.
hour
(),
DEC
);
Serial
.
print
(
":"
);
Serial
.
print
(
now
.
minute
(),
DEC
);
Serial
.
print
(
":"
);
Serial
.
print
(
now
.
second
(),
DEC
);
#endif //display_serial
//now log the sensor data
//code for measuring voltage from https://create.arduino.cc/projecthub/next-tech-lab/voltmeter-using-arduino-00e7d1
int
voltage_value
=
analogRead
(
v_in_pin
);
v_out
=
(
voltage_value
*
5.11
)
/
1024.00
;
//formula for calculating voltage out (V+) referece is 5.11v
float
v_in
=
v_out
/
(
R2
/
(
R1
+
R2
));
// to calculate voltage_in using voltage devider
//float I = v_in / (R1+R2)
logfile
.
print
(
", "
);
logfile
.
print
(
v_in
);
//logfile.print(", ")
//logfile.print(I)
#if display_serial
Serial
.
print
(
", "
);
Serial
.
print
(
Vin
);
//Serial.print(", ")
//Serial.print(I)
#endif
digitalWrite
(
greenLED
,
LOW
)
}
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment