Unified the default configuration/setting values and parameters into one header file.
This commit is contained in:
@@ -10,6 +10,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "Translation.h"
|
#include "Translation.h"
|
||||||
#include "cmsis_os.h"
|
#include "cmsis_os.h"
|
||||||
|
#include "../../configuration.h"
|
||||||
|
|
||||||
const uint8_t *OLED::currentFont; // Pointer to the current font used for
|
const uint8_t *OLED::currentFont; // Pointer to the current font used for
|
||||||
// rendering to the buffer
|
// rendering to the buffer
|
||||||
@@ -65,7 +66,7 @@ void OLED::initialize() {
|
|||||||
cursor_x = cursor_y = 0;
|
cursor_x = cursor_y = 0;
|
||||||
currentFont = USER_FONT_12;
|
currentFont = USER_FONT_12;
|
||||||
fontWidth = 12;
|
fontWidth = 12;
|
||||||
inLeftHandedMode = false;
|
inLeftHandedMode = IN_LEFT_HANDED_MODE;
|
||||||
firstStripPtr = &screenBuffer[FRAMEBUFFER_START];
|
firstStripPtr = &screenBuffer[FRAMEBUFFER_START];
|
||||||
secondStripPtr = &screenBuffer[FRAMEBUFFER_START + OLED_WIDTH];
|
secondStripPtr = &screenBuffer[FRAMEBUFFER_START + OLED_WIDTH];
|
||||||
fontHeight = 16;
|
fontHeight = 16;
|
||||||
|
|||||||
@@ -1,116 +1,126 @@
|
|||||||
/*
|
/**
|
||||||
* Settings.c
|
* Settings.c
|
||||||
*
|
*
|
||||||
* Created on: 29 Sep 2016
|
* Created on: 29 Sep 2016
|
||||||
* Author: Ralim
|
* Author: Ralim
|
||||||
*
|
|
||||||
* This file holds the users settings and saves / restores them to the
|
* This file holds the users settings and saves / restores them to the
|
||||||
* devices flash
|
* devices flash
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
#include "Setup.h"
|
#include "Setup.h"
|
||||||
#define FLASH_ADDR \
|
|
||||||
(0x8000000 | \
|
|
||||||
0xFC00) /*Flash start OR'ed with the maximum amount of flash - 1024 bytes*/
|
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
#include "../../configuration.h"
|
||||||
|
|
||||||
volatile systemSettingsType systemSettings;
|
volatile systemSettingsType systemSettings;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flash start OR'ed with the maximum amount of flash - 1024 bytes
|
||||||
|
*/
|
||||||
|
#define FLASH_ADDR (0x8000000 | 0xFC00)
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save Settings to flash
|
||||||
|
*/
|
||||||
void saveSettings() {
|
void saveSettings() {
|
||||||
// First we erase the flash
|
// First we erase the flash
|
||||||
FLASH_EraseInitTypeDef pEraseInit;
|
FLASH_EraseInitTypeDef pEraseInit;
|
||||||
pEraseInit.TypeErase = FLASH_TYPEERASE_PAGES;
|
pEraseInit.TypeErase = FLASH_TYPEERASE_PAGES;
|
||||||
pEraseInit.Banks = FLASH_BANK_1;
|
pEraseInit.Banks = FLASH_BANK_1;
|
||||||
pEraseInit.NbPages = 1;
|
pEraseInit.NbPages = 1;
|
||||||
pEraseInit.PageAddress = FLASH_ADDR;
|
pEraseInit.PageAddress = FLASH_ADDR;
|
||||||
uint32_t failingAddress = 0;
|
|
||||||
HAL_IWDG_Refresh(&hiwdg);
|
|
||||||
__HAL_FLASH_CLEAR_FLAG(
|
|
||||||
FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGERR | FLASH_FLAG_BSY);
|
|
||||||
HAL_FLASH_Unlock();
|
|
||||||
HAL_Delay(10);
|
|
||||||
HAL_IWDG_Refresh(&hiwdg);
|
|
||||||
HAL_FLASHEx_Erase(&pEraseInit, &failingAddress);
|
|
||||||
//^ Erase the page of flash (1024 bytes on this stm32)
|
|
||||||
// erased the chunk
|
|
||||||
// now we program it
|
|
||||||
uint16_t *data = (uint16_t*) &systemSettings;
|
|
||||||
HAL_FLASH_Unlock();
|
|
||||||
|
|
||||||
for (uint8_t i = 0; i < (sizeof(systemSettingsType) / 2); i++) {
|
uint32_t failingAddress = 0;
|
||||||
HAL_IWDG_Refresh(&hiwdg);
|
HAL_IWDG_Refresh(&hiwdg);
|
||||||
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, FLASH_ADDR + (i * 2),
|
__HAL_FLASH_CLEAR_FLAG( FLASH_FLAG_EOP |
|
||||||
data[i]);
|
FLASH_FLAG_WRPERR |
|
||||||
}
|
FLASH_FLAG_PGERR |
|
||||||
HAL_FLASH_Lock();
|
FLASH_FLAG_BSY );
|
||||||
|
HAL_FLASH_Unlock();
|
||||||
|
HAL_Delay(10);
|
||||||
|
HAL_IWDG_Refresh(&hiwdg);
|
||||||
|
HAL_FLASHEx_Erase(&pEraseInit, &failingAddress);
|
||||||
|
//^ Erase the page of flash (1024 bytes on this stm32)
|
||||||
|
// erased the chunk
|
||||||
|
// now we program it
|
||||||
|
uint16_t *data = (uint16_t*) &systemSettings;
|
||||||
|
HAL_FLASH_Unlock();
|
||||||
|
|
||||||
|
for (uint8_t i = 0; i < (sizeof(systemSettingsType) / 2); i++) {
|
||||||
|
HAL_IWDG_Refresh(&hiwdg);
|
||||||
|
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, FLASH_ADDR + (i * 2),
|
||||||
|
data[i]);
|
||||||
|
}
|
||||||
|
HAL_FLASH_Lock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* RestoreSettings from flash
|
||||||
|
* Return:
|
||||||
|
* false - if restore from flash is successfull
|
||||||
|
* true - if settings are reset to its defaults
|
||||||
|
*/
|
||||||
bool restoreSettings() {
|
bool restoreSettings() {
|
||||||
// We read the flash
|
// We read from flash
|
||||||
uint16_t *data = (uint16_t*) &systemSettings;
|
uint16_t *data = (uint16_t*) &systemSettings;
|
||||||
for (uint8_t i = 0; i < (sizeof(systemSettingsType) / 2); i++) {
|
for (uint8_t i = 0; i < (sizeof(systemSettingsType) / 2); i++) {
|
||||||
data[i] = *((uint16_t*) (FLASH_ADDR + (i * 2)));
|
data[i] = *((uint16_t*) (FLASH_ADDR + (i * 2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the version is correct were done
|
if (systemSettings.version != SETTINGSVERSION) {
|
||||||
// if not we reset and save
|
// The settings version does not match.
|
||||||
if (systemSettings.version != SETTINGSVERSION) {
|
// Resetting the settings to its default.
|
||||||
// probably not setup
|
resetSettings();
|
||||||
resetSettings();
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
return false; // Settings version from flash is correct were done
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
// Lookup function for cutoff setting -> X10 voltage
|
|
||||||
/*
|
/**
|
||||||
* 0=DC
|
* lookupVoltageLevel
|
||||||
* 1=3S
|
*
|
||||||
* 2=4S
|
* Lookup function for cutoff setting -> X10 voltage
|
||||||
* 3=5S
|
* 0=DC 1=3S 2=4S 3=5S 4=6S
|
||||||
* 4=6S
|
*
|
||||||
*/
|
*/
|
||||||
uint8_t lookupVoltageLevel(uint8_t level) {
|
uint8_t lookupVoltageLevel(uint8_t level) {
|
||||||
if (level == 0)
|
if (level == 0) {
|
||||||
return 90; // 9V since iron does not function effectively below this
|
// 9V - Since iron does not function effectively below this
|
||||||
else
|
return 90;
|
||||||
return (level * 33) + (33 * 2);
|
} else {
|
||||||
|
return (level * 33) + (33 * 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
void resetSettings() {
|
|
||||||
memset((void*) &systemSettings, 0, sizeof(systemSettingsType));
|
|
||||||
systemSettings.SleepTemp = 150; // Temperature the iron sleeps at - default 150.0 C
|
|
||||||
systemSettings.SleepTime = 6; // How many seconds/minutes we wait until going
|
|
||||||
// to sleep - default 1 min
|
|
||||||
systemSettings.SolderingTemp = 320; // Default soldering temp is 320.0 C
|
|
||||||
systemSettings.cutoutSetting = 0; // default to no cut-off voltage (or 18W for TS80)
|
|
||||||
systemSettings.version =
|
|
||||||
SETTINGSVERSION; // Store the version number to allow for easier upgrades
|
|
||||||
systemSettings.detailedSoldering = 0; // Detailed soldering screen
|
|
||||||
systemSettings.detailedIDLE = 0; // Detailed idle screen (off for first time users)
|
|
||||||
systemSettings.OrientationMode = 2; // Default to automatic
|
|
||||||
systemSettings.sensitivity = 7; // Default high sensitivity
|
|
||||||
#ifdef MODEL_TS80
|
|
||||||
systemSettings.voltageDiv = 780; // Default divider from schematic
|
|
||||||
|
|
||||||
#else
|
/**
|
||||||
systemSettings.voltageDiv = 467; // Default divider from schematic
|
* Reset Settings to its default values.
|
||||||
#endif
|
*/
|
||||||
systemSettings.ShutdownTime = 10; // How many minutes until the unit turns itself off
|
void resetSettings() {
|
||||||
systemSettings.boostModeEnabled = 1; // Default to having boost mode on as most people prefer it
|
memset((void*) &systemSettings, 0, sizeof(systemSettingsType));
|
||||||
systemSettings.BoostTemp = 420; // default to 400C
|
|
||||||
systemSettings.autoStartMode = 0; // Auto start off for safety
|
systemSettings.SleepTemp = SLEEP_TEMP; // Temperature the iron sleeps at - default 150.0 C
|
||||||
systemSettings.coolingTempBlink = 0; // Blink the temperature on the cooling screen when its > 50C
|
systemSettings.SleepTime = SLEEP_TIME; // How many seconds/minutes we wait until going to sleep - default 1 min
|
||||||
systemSettings.temperatureInF = 0; // default to 0
|
systemSettings.SolderingTemp = SOLDERING_TEMP; // Default soldering temp is 320.0 C
|
||||||
systemSettings.descriptionScrollSpeed = 0; // default to slow
|
systemSettings.cutoutSetting = CUT_OUT_SETTING; // default to no cut-off voltage (or 18W for TS80)
|
||||||
systemSettings.powerLimitEnable = 0; // Default to no power limit
|
systemSettings.version = SETTINGSVERSION; // Store the version number to allow for easier upgrades
|
||||||
#ifdef MODEL_TS100
|
systemSettings.detailedSoldering = DETAILED_SOLDERING; // Detailed soldering screen
|
||||||
systemSettings.CalibrationOffset = 900; // the adc offset in uV
|
systemSettings.detailedIDLE = DETAILED_IDLE; // Detailed idle screen (off for first time users)
|
||||||
systemSettings.pidPowerLimit = 70; // Sets the max pwm power limit
|
systemSettings.OrientationMode = ORIENTATION_MODE; // Default to automatic
|
||||||
systemSettings.powerLimit = 30; // 30 watts default limit
|
systemSettings.sensitivity = SENSITIVITY; // Default high sensitivity
|
||||||
#endif
|
systemSettings.voltageDiv = VOLTAGE_DIV; // Default divider from schematic
|
||||||
#ifdef MODEL_TS80
|
systemSettings.ShutdownTime = SHUTDOWN_TIME; // How many minutes until the unit turns itself off
|
||||||
systemSettings.pidPowerLimit = 24; // Sets the max pwm power limit
|
systemSettings.boostModeEnabled = BOOST_MODE_ENABLED; // Default to having boost mode on as most people prefer it
|
||||||
systemSettings.CalibrationOffset = 900; // the adc offset in uV
|
systemSettings.BoostTemp = BOOST_TEMP; // default to 400C
|
||||||
systemSettings.powerLimit = 24; // 24 watts default power limit
|
systemSettings.autoStartMode = AUTO_START_MODE; // Auto start off for safety
|
||||||
#endif
|
systemSettings.coolingTempBlink = COOLING_TEMP_BLINK; // Blink the temperature on the cooling screen when its > 50C
|
||||||
saveSettings(); // Save defaults
|
systemSettings.temperatureInF = TEMPERATURE_INF; // default to 0
|
||||||
|
systemSettings.descriptionScrollSpeed = DESCRIPTION_SCROLL_SPEED; // default to slow
|
||||||
|
systemSettings.powerLimitEnable = POWER_LIMIT_ENABLE; // Default to no power limit
|
||||||
|
systemSettings.CalibrationOffset = CALIBRATION_OFFSET; // the adc offset in uV
|
||||||
|
systemSettings.pidPowerLimit = PID_POWER_LIMIT; // Sets the max pwm power limit
|
||||||
|
systemSettings.powerLimit = POWER_LIMIT; // 30 watts default limit
|
||||||
|
|
||||||
|
saveSettings(); // Save default settings
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "TipThermoModel.h"
|
#include "TipThermoModel.h"
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
#include "hardware.h"
|
#include "hardware.h"
|
||||||
|
#include "../../configuration.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The hardware is laid out as a non-inverting op-amp
|
* The hardware is laid out as a non-inverting op-amp
|
||||||
@@ -26,18 +27,6 @@
|
|||||||
* This was bought to my attention by <Kuba Sztandera>
|
* This was bought to my attention by <Kuba Sztandera>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// TIP_GAIN = TIP_GAIN/1000 == uV per deg C constant of the tip
|
|
||||||
#ifdef MODEL_TS100
|
|
||||||
#define OP_AMP_Rf 750*1000 /*750 Kilo-ohms -> From schematic, R1*/
|
|
||||||
#define OP_AMP_Rin 2370 /*2.37 Kilo-ohms -> From schematic, R2*/
|
|
||||||
#define TIP_GAIN 405
|
|
||||||
#else
|
|
||||||
#define OP_AMP_Rf 180*1000 /*180 Kilo-ohms -> From schematic, R6*/
|
|
||||||
#define OP_AMP_Rin 2000 /*2.0 Kilo-ohms -> From schematic, R3*/
|
|
||||||
#define TIP_GAIN 115
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define op_amp_gain_stage (1+(OP_AMP_Rf/OP_AMP_Rin))
|
#define op_amp_gain_stage (1+(OP_AMP_Rf/OP_AMP_Rin))
|
||||||
uint32_t TipThermoModel::convertTipRawADCTouV(uint16_t rawADC) {
|
uint32_t TipThermoModel::convertTipRawADCTouV(uint16_t rawADC) {
|
||||||
// This takes the raw ADC samples, converts these to uV
|
// This takes the raw ADC samples, converts these to uV
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -11,16 +11,19 @@
|
|||||||
#include "main.hpp"
|
#include "main.hpp"
|
||||||
#include "TipThermoModel.h"
|
#include "TipThermoModel.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
#include "../../configuration.h"
|
||||||
|
|
||||||
extern uint32_t lastButtonTime;
|
extern uint32_t lastButtonTime;
|
||||||
void gui_Menu(const menuitem *menu);
|
void gui_Menu(const menuitem *menu);
|
||||||
#ifdef MODEL_TS100
|
|
||||||
static void settings_setInputVRange(void);
|
|
||||||
static void settings_displayInputVRange(void);
|
|
||||||
#else
|
|
||||||
static void settings_setInputPRange(void);
|
|
||||||
static void settings_displayInputPRange(void);
|
|
||||||
|
|
||||||
|
#ifdef MODEL_TS100
|
||||||
|
static void settings_setInputVRange(void);
|
||||||
|
static void settings_displayInputVRange(void);
|
||||||
|
#else
|
||||||
|
static void settings_setInputPRange(void);
|
||||||
|
static void settings_displayInputPRange(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void settings_setSleepTemp(void);
|
static void settings_setSleepTemp(void);
|
||||||
static void settings_displaySleepTemp(void);
|
static void settings_displaySleepTemp(void);
|
||||||
static void settings_setSleepTime(void);
|
static void settings_setSleepTime(void);
|
||||||
@@ -463,18 +466,10 @@ static void settings_displayPowerLimitEnable(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void settings_setPowerLimit(void) {
|
static void settings_setPowerLimit(void) {
|
||||||
#ifdef MODEL_TS100
|
if (systemSettings.powerLimit >= MAX_POWER_LIMIT)
|
||||||
if (systemSettings.powerLimit >= 65)
|
systemSettings.powerLimit = POWER_LIMIT_STEPS;
|
||||||
systemSettings.powerLimit = 5;
|
|
||||||
else
|
else
|
||||||
systemSettings.powerLimit += 5;
|
systemSettings.powerLimit += POWER_LIMIT_STEPS;
|
||||||
#endif
|
|
||||||
#ifdef MODEL_TS80
|
|
||||||
if(systemSettings.powerLimit >= 30)
|
|
||||||
systemSettings.powerLimit = 2;
|
|
||||||
else
|
|
||||||
systemSettings.powerLimit += 2;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void settings_displayPowerLimit(void) {
|
static void settings_displayPowerLimit(void) {
|
||||||
|
|||||||
99
workspace/TS100/configuration.h
Normal file
99
workspace/TS100/configuration.h
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
#pragma once
|
||||||
|
/**
|
||||||
|
* Configuration.h
|
||||||
|
* Define here your default pre settings for TS80 or TS100
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//============================= Default Settings ============================
|
||||||
|
//===========================================================================
|
||||||
|
/**
|
||||||
|
* Default soldering temp is 320.0 C
|
||||||
|
* Temperature the iron sleeps at - default 150.0 C
|
||||||
|
*/
|
||||||
|
#define SOLDERING_TEMP 320 // Default soldering temp is 320.0 °C
|
||||||
|
#define SLEEP_TEMP 150 // Default sleep temperature
|
||||||
|
#define BOOST_TEMP 420 // Default boost temp.
|
||||||
|
#define BOOST_MODE_ENABLED 0 // 0: Disable 1: Enable
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Blink the temperature on the cooling screen when its > 50C
|
||||||
|
*/
|
||||||
|
#define COOLING_TEMP_BLINK 1 // 0: Disable 1: Enable
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How many seconds/minutes we wait until going to sleep/shutdown.
|
||||||
|
* Values -> SLEEP_TIME * 10; i.e. 5*10 = 50 Seconds!
|
||||||
|
*/
|
||||||
|
#define SLEEP_TIME 5 // x10 Seconds
|
||||||
|
#define SHUTDOWN_TIME 10 // Minutes
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto start off for safety.
|
||||||
|
* Pissible values are:
|
||||||
|
* 0 - none
|
||||||
|
* 1 - Soldering Temperature
|
||||||
|
* 2 - Sleep Temperature
|
||||||
|
* 3 - Sleep Off Temperature
|
||||||
|
*/
|
||||||
|
#define AUTO_START_MODE 0 // Default to none
|
||||||
|
|
||||||
|
/**
|
||||||
|
* OLED Orientation
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define ORIENTATION_MODE 0 // 0: Right 1:Left 2:Automatic - Default right
|
||||||
|
#define IN_LEFT_HANDED_MODE 0 // 0:FALSE 1:TRUE - Default false
|
||||||
|
|
||||||
|
/**
|
||||||
|
* OLED Orientation Sensitivity on Automatic mode!
|
||||||
|
* Motion Sensitivity <0=Off 1=Least Sensitive 9=Most Sensitive>
|
||||||
|
*/
|
||||||
|
#define SENSITIVITY 7 // Default 7
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detailed soldering screen
|
||||||
|
* Detailed idle screen (off for first time users)
|
||||||
|
*/
|
||||||
|
#define DETAILED_SOLDERING 0 // 0: Disable 1: Enable - Default 0
|
||||||
|
#define DETAILED_IDLE 0 // 0: Disable 1: Enable - Default 0
|
||||||
|
|
||||||
|
|
||||||
|
#define CUT_OUT_SETTING 0 // default to no cut-off voltage (or 18W for TS80)
|
||||||
|
#define TEMPERATURE_INF 0 // default to 0
|
||||||
|
#define DESCRIPTION_SCROLL_SPEED 0 // 0: Slow 1: Fast - default to slow
|
||||||
|
#define POWER_LIMIT_ENABLE 0 // 0: Disable 1: Enable - Default disabled power limit
|
||||||
|
|
||||||
|
#ifdef MODEL_TS100
|
||||||
|
#define VOLTAGE_DIV 467 // 467 - Default divider from schematic
|
||||||
|
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
|
||||||
|
#define PID_POWER_LIMIT 70 // Sets the max pwm power limit
|
||||||
|
#define POWER_LIMIT 65 // 30 watts default limit
|
||||||
|
#define MAX_POWER_LIMIT 65 //
|
||||||
|
#define POWER_LIMIT_STEPS 5 //
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TIP_GAIN = TIP_GAIN/1000 == uV per deg C constant of the tip
|
||||||
|
*/
|
||||||
|
#define OP_AMP_Rf 750*1000 // 750 Kilo-ohms -> From schematic, R1
|
||||||
|
#define OP_AMP_Rin 2370 // 2.37 Kilo-ohms -> From schematic, R2
|
||||||
|
#define TIP_GAIN 405
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef MODEL_TS80
|
||||||
|
#define VOLTAGE_DIV 780 // Default divider from schematic
|
||||||
|
#define PID_POWER_LIMIT 24 // Sets the max pwm power limit
|
||||||
|
#define CALIBRATION_OFFSET 900 // the adc offset in uV
|
||||||
|
#define POWER_LIMIT 24 // 24 watts default power limit
|
||||||
|
#define MAX_POWER_LIMIT 30 //
|
||||||
|
#define POWER_LIMIT_STEPS 2
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TIP_GAIN = TIP_GAIN/1000 == uV per deg C constant of the tip
|
||||||
|
*/
|
||||||
|
#define OP_AMP_Rf 180*1000 // 180 Kilo-ohms -> From schematic, R6
|
||||||
|
#define OP_AMP_Rin 2000 // 2.0 Kilo-ohms -> From schematic, R3
|
||||||
|
#define TIP_GAIN 115
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user