Schematic + Code Updates

- ESP32-S3 Komplett
- MC4728 Komplett + Test Skript
This commit is contained in:
Erik Tóth
2025-10-11 11:00:04 +02:00
parent 30a4c327ba
commit 7c4b2c1bac
39 changed files with 22195 additions and 16053 deletions

View File

@@ -1,5 +1,5 @@
TRI-SQR-VCO_OTA
*SPICE Netlist generated by Advanced Sim server on 01.10.2025 19:12:54
*SPICE Netlist generated by Advanced Sim server on 08.10.2025 17:40:24
.options MixedSimGenerated
*Schematic Netlist:
@@ -44,16 +44,18 @@ RRoff NetIC3_2 Vee 650k
QT1 NetC_an_1 0 NetC_an_2 2N2907
QT2 NetT2_3 U_C NetC_an_2 2N2907
JT_SAW 0 NetR_SAW_e_2 NetIC2_12 BF545B
VU_I-GND-MESS NetU_I-GND-MESS_1 0 0
VU_mess NetT2_3 NetIC1_16 0
VU_messref NetR_E_2 NetIC2_7 0
VU_neg 0 Vee 15
VU_pos Vcc 0 15
VU_neg NetU_I-GND-MESS_1 Vee 15
VU_pos Vcc NetU_I-GND-MESS_1 15
VU_var NetR_CV_1 0 1
.PLOT TRAN {v(U_SQR)} =PLOT(2) =AXIS(1) =NAME(U_SQR) =UNITS(V)
.PLOT TRAN {v(U_TRI)} =PLOT(1) =AXIS(1) =NAME(U_TRI) =UNITS(V)
.PLOT TRAN {v(U_SAW)} =PLOT(3) =AXIS(1) =NAME(U_SAW) =UNITS(V)
.PLOT TRAN {v(U_PWM)} =PLOT(4) =AXIS(1) =NAME(PWM) =UNITS(V)
.PLOT TRAN {i(U_I-GND-MESS)} =PLOT(5) =AXIS(1) =NAME(I_GND) =UNITS(A)
.OPTIONS ITL4=100 METHOD=GEAR MAXORD=2
*Selected Circuit Analyses:

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
Record=TopLevelDocument|FileName=DAC_MCP4728.SchDoc|SheetNumber=1

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,5 @@
.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch

View File

@@ -0,0 +1,10 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}

View File

@@ -0,0 +1,37 @@
This directory is intended for project header files.
A header file is a file containing C declarations and macro definitions
to be shared between several project source files. You request the use of a
header file in your project source file (C, C++, etc) located in `src` folder
by including it, with the C preprocessing directive `#include'.
```src/main.c
#include "header.h"
int main (void)
{
...
}
```
Including a header file produces the same results as copying the header file
into each source file that needs it. Such copying would be time-consuming
and error-prone. With a header file, the related declarations appear
in only one place. If they need to be changed, they can be changed in one
place, and programs that include the header file will automatically use the
new version when next recompiled. The header file eliminates the labor of
finding and changing all the copies as well as the risk that a failure to
find one copy will result in inconsistencies within a program.
In C, the convention is to give header files names that end with `.h'.
Read more about using header files in official GCC documentation:
* Include Syntax
* Include Operation
* Once-Only Headers
* Computed Includes
https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html

View File

@@ -0,0 +1,46 @@
This directory is intended for project specific (private) libraries.
PlatformIO will compile them to static libraries and link into the executable file.
The source code of each library should be placed in a separate directory
("lib/your_library_name/[Code]").
For example, see the structure of the following example libraries `Foo` and `Bar`:
|--lib
| |
| |--Bar
| | |--docs
| | |--examples
| | |--src
| | |- Bar.c
| | |- Bar.h
| | |- library.json (optional. for custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
| |
| |--Foo
| | |- Foo.c
| | |- Foo.h
| |
| |- README --> THIS FILE
|
|- platformio.ini
|--src
|- main.c
Example contents of `src/main.c` using Foo and Bar:
```
#include <Foo.h>
#include <Bar.h>
int main (void)
{
...
}
```
The PlatformIO Library Dependency Finder will find automatically dependent
libraries by scanning project source files.
More information about PlatformIO Library Dependency Finder
- https://docs.platformio.org/page/librarymanager/ldf.html

View File

@@ -0,0 +1,16 @@
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:esp32-s3-devkitm-1]
platform = espressif32
board = esp32-s3-devkitm-1
framework = arduino
build_flags = -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=1 -DARDUINO_USB_JTAG_ON_BOOT=1
lib_deps = adafruit/Adafruit MCP4728@^1.0.10

View File

@@ -0,0 +1,57 @@
#include <Wire.h>
#include <Adafruit_MCP4728.h>
#define BAUDRATE 115200
#define I2C_SDA 15
#define I2C_SCL 16
#define I2C_FREQ 400000
#define DAC_MAX 4095
#define DAC_MIN 0
#define VREF_mV 5000
Adafruit_MCP4728 mcp;
static uint16_t value_mV = VREF_mV;
uint16_t voltage(uint16_t mV)
{
return map(mV, 0, VREF_mV, DAC_MIN, DAC_MAX);
}
void setup()
{
Serial.begin(BAUDRATE);
delay(1000);
Serial.print("\n\r--- ESP32-S3 + MCP4728 DAC Test ---");
Wire.begin(I2C_SDA, I2C_SCL);
Wire.setClock(I2C_FREQ);
Serial.print("\n\rInitialisiere MCP4728...");
uint8_t attempts = 0;
while (!mcp.begin())
{
Serial.print(".");
delay(100);
}
Serial.print("\n\rErfolgreich verbunden!");
mcp.setChannelValue(MCP4728_CHANNEL_A, 0, MCP4728_VREF_INTERNAL, MCP4728_GAIN_2X);
Serial.print("\n\rDAC-Kanal A auf 0 gesetzt");
delay(1000);
}
void loop()
{
value_mV = 200;
bool success = mcp.setChannelValue(MCP4728_CHANNEL_A, voltage(value_mV));
if (success) Serial.printf("DAC A = %u -> mV: %u\r\n", voltage(value_mV), value_mV);
else Serial.println("Schreibfehler am MCP4728!");
delay(200);
//value_mV = value_mV > 0 ? value_mV/2 : VREF_mV;
}

View File

@@ -0,0 +1,11 @@
This directory is intended for PlatformIO Test Runner and project tests.
Unit Testing is a software testing method by which individual units of
source code, sets of one or more MCU program modules together with associated
control data, usage procedures, and operating procedures, are tested to
determine whether they are fit for use. Unit testing finds problems early
in the development cycle.
More information about PlatformIO Unit Testing:
- https://docs.platformio.org/en/latest/advanced/unit-testing/index.html

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long