Skip to content

Commit 45db3e2

Browse files
committed
Add README.md
1 parent 3637802 commit 45db3e2

3 files changed

Lines changed: 258 additions & 0 deletions

File tree

‎README.md‎

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
[![Version: 1.0 Release](https://img.shields.io/badge/Version-1.0%20Release-green.svg)](https://github.com/0x007e/wfg) ![Build](https://github.com/0x007e/wfg/actions/workflows/build.yml/badge.svg?branch=main) [![License CC By-NC-SA](https://img.shields.io/badge/Hardware-CC--BY--NC--SA--4.0-lightgrey)](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode)
2+
3+
# `WFG` - Waveform Generator (Signalgenerator)
4+
5+
The `WFG` is a board with an [LM324](#additional-information) or any other 2-channel operational amplifier. The board itself is driven with a voltage of `5V`. It generates a triange and a pwm signal. Both signals can be adjustet through the onboard trimmer. When the board is connected to a voltage source the `green` led signals the readiness.
6+
7+
Optional the generated signals can be readin with an external interrupt and a internal running timmer on a microcontroller and status data can be sent to a terminal over UART. A demo how this can be done is attached and can be tested with an [ATmega16A](#additional-information).
8+
9+
> This design is derived form Analog Devices. Details can be found [here](https://www.analog.com/en/resources/design-notes/pulsewidth-modulator-operates-at-various-levels-of-frequency-and-power.html)
10+
11+
| Experience | Level |
12+
|:------------|:-----:|
13+
| Soldering | ![?%](https://progress-bar.xyz/20?progress_color=00ff00&suffix=%20Medium&width=120) |
14+
| Software | ![?%](https://progress-bar.xyz/30?progress_color=0000ff&suffix=%20Low&width=120) |
15+
16+
# Downloads
17+
18+
| Type | File | Description |
19+
|:---------:|:------------------:|:-------------------------|
20+
| Simulation | [asc](https://github.com/0x007E/wfg/raw/refs/heads/main/WFG.asc) | LTSpice Simulation |
21+
| Lochmaster | [lm4](https://github.com/0x007E/wfg/raw/refs/heads/main/WFG.LM4) | Stripe grid circuit board |
22+
| Schematic | [pdf](https://github.com/0x007E/wfg/releases/latest/download/schematic.pdf) / [cadlab](https://cadlab.io/project/29870/main/files) | Schematic files |
23+
| Board | [pdf](https://github.com/0x007E/wfg/releases/latest/download/pcb.pdf) / [cadlab](https://cadlab.io/project/29870/main/files) | Board file |
24+
| Drill | [pdf](https://github.com/0x007E/wfg/releases/latest/download/drill.pdf) | Drill file |
25+
| Gerber | [zip](https://github.com/0x007E/wfg/releases/latest/download/kicad.zip) / [tar](https://github.com/0x007E/wfg/releases/latest/download/kicad.tar.gz) | Gerber/Drill files |
26+
| Firmware | [zip](https://github.com/0x007E/wfg/releases/latest/download/firmware.zip) / [tar](https://github.com/0x007E/wfg/releases/latest/download/firmware.tar.gz) | Demo Firmware for ATmega16 |
27+
28+
# Hardware
29+
30+
The pcb is created with `KiCAD`. All files are built with `github actions` so that they are ready for a production environment.
31+
32+
## PCB
33+
34+
The circuit board is populated on one side. The best way for soldering the `SMD` components is within a vapor phase soldering system and for the `THT` components with a standard system.
35+
36+
### Top Layer
37+
38+
![Top Layer](https://github.com/0x007E/wfg/releases/latest/download/top.kicad.png)
39+
40+
### Bottom Layer
41+
42+
![Bottom Layer](https://github.com/0x007E/wfg/releases/latest/download/bottom.kicad.png)
43+
44+
# Configuration
45+
46+
Within the different trimmers the waveforms can be adjustet in height, frequency and duty cycle.
47+
48+
# Software
49+
50+
The demo firmware (`ATmega16A`) of the `WFG` can be used to measure the frequency and duty cycle of the generated PWM signal and transmit the data over uart to a terminal.
51+
52+
## Dataflow diagram
53+
54+
![Dataflow](./images/dataflow.png)
55+
56+
# Additional Information
57+
58+
| Type | Link | Description |
59+
|:----------:|:------------------:|:-------------------------|
60+
| LM324 | [pdf](https://www.ti.com/lit/ds/symlink/lm324.pdf) | Quad operational amplifier |
61+
| ATmega16A | [pdf](https://ww1.microchip.com/downloads/en/devicedoc/atmel-8154-8-bit-avr-atmega16a_datasheet.pdf) | Microchip ATmega16A Datasheet |
62+
63+
---
64+
65+
R. GAECHTER

‎images/dataflow.drawio‎

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.2.9 Chrome/140.0.7339.249 Electron/38.7.2 Safari/537.36" version="29.2.9">
2+
<diagram name="Seite-1" id="5_yMil5gJSfmWAZm3a9V">
3+
<mxGraphModel dx="983" dy="580" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
4+
<root>
5+
<mxCell id="0" />
6+
<mxCell id="1" parent="0" />
7+
<mxCell id="2j-rZwEIqoR1VBWoCeoS-139" parent="1" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=default;" value="" vertex="1">
8+
<mxGeometry height="320" width="585" x="420" y="240" as="geometry" />
9+
</mxCell>
10+
<mxCell id="2j-rZwEIqoR1VBWoCeoS-1" parent="1" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;" value="Software" vertex="1">
11+
<mxGeometry height="170" width="344" x="560" y="264" as="geometry" />
12+
</mxCell>
13+
<mxCell id="2j-rZwEIqoR1VBWoCeoS-94" edge="1" parent="1" source="2j-rZwEIqoR1VBWoCeoS-89" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;">
14+
<mxGeometry relative="1" as="geometry">
15+
<mxPoint x="475.0000000000001" y="344" as="sourcePoint" />
16+
<mxPoint x="495" y="344.1081081081081" as="targetPoint" />
17+
</mxGeometry>
18+
</mxCell>
19+
<mxCell id="2j-rZwEIqoR1VBWoCeoS-89" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;verticalAlign=bottom;labelPosition=center;verticalLabelPosition=top;align=center;horizontal=1;" value="" vertex="1">
20+
<mxGeometry height="10" width="10" x="410" y="339" as="geometry" />
21+
</mxCell>
22+
<mxCell id="2j-rZwEIqoR1VBWoCeoS-91" parent="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=0;fontSize=9;horizontal=1;fontFamily=Lucida Console;" value="INT0 (PD2)" vertex="1">
23+
<mxGeometry height="10" width="70" x="420" y="333" as="geometry" />
24+
</mxCell>
25+
<mxCell id="2j-rZwEIqoR1VBWoCeoS-104" edge="1" parent="1" source="2j-rZwEIqoR1VBWoCeoS-93" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;endArrow=none;endFill=0;startArrow=classic;startFill=1;">
26+
<mxGeometry relative="1" as="geometry">
27+
<mxPoint x="524.9230769230769" y="420" as="targetPoint" />
28+
</mxGeometry>
29+
</mxCell>
30+
<mxCell id="2j-rZwEIqoR1VBWoCeoS-114" edge="1" parent="1" source="2j-rZwEIqoR1VBWoCeoS-93" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;">
31+
<mxGeometry relative="1" as="geometry">
32+
<mxPoint x="590" y="360" as="targetPoint" />
33+
</mxGeometry>
34+
</mxCell>
35+
<mxCell id="2j-rZwEIqoR1VBWoCeoS-115" connectable="0" parent="2j-rZwEIqoR1VBWoCeoS-114" style="edgeLabel;html=1;align=center;verticalAlign=bottom;resizable=0;points=[];labelPosition=center;verticalLabelPosition=top;" value="U&lt;sub&gt;IN&lt;/sub&gt;" vertex="1">
36+
<mxGeometry relative="1" x="-0.0593" y="2" as="geometry">
37+
<mxPoint as="offset" />
38+
</mxGeometry>
39+
</mxCell>
40+
<mxCell id="2j-rZwEIqoR1VBWoCeoS-93" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="EXTI" vertex="1">
41+
<mxGeometry height="60" width="60" x="495" y="330" as="geometry" />
42+
</mxCell>
43+
<mxCell id="2j-rZwEIqoR1VBWoCeoS-106" edge="1" parent="1" style="endArrow=none;html=1;strokeWidth=2;rounded=0;strokeColor=#999999;" value="">
44+
<mxGeometry height="50" relative="1" width="50" as="geometry">
45+
<mxPoint x="535" y="414" as="sourcePoint" />
46+
<mxPoint x="515" y="404" as="targetPoint" />
47+
</mxGeometry>
48+
</mxCell>
49+
<mxCell id="2j-rZwEIqoR1VBWoCeoS-107" connectable="0" parent="2j-rZwEIqoR1VBWoCeoS-106" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=middle;fontColor=#999999;" value="2" vertex="1">
50+
<mxGeometry relative="1" x="-0.44" y="1" as="geometry">
51+
<mxPoint as="offset" />
52+
</mxGeometry>
53+
</mxCell>
54+
<mxCell id="OaFd7o5ASwqJi1sYeaUk-1" edge="1" parent="1" source="2j-rZwEIqoR1VBWoCeoS-108" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" target="2j-rZwEIqoR1VBWoCeoS-93" value="">
55+
<mxGeometry relative="1" as="geometry" />
56+
</mxCell>
57+
<mxCell id="2j-rZwEIqoR1VBWoCeoS-108" parent="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=0;fontSize=9;horizontal=1;fontFamily=Lucida Console;" value="Trigger" vertex="1">
58+
<mxGeometry height="10" width="70" x="490" y="420" as="geometry" />
59+
</mxCell>
60+
<mxCell id="h8aSxiHESVSjdpus-O2o-176" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" value="&lt;span style=&quot;font-size: 20px;&quot;&gt;PWM&lt;/span&gt;" vertex="1">
61+
<mxGeometry height="30" width="380" x="465" y="250" as="geometry" />
62+
</mxCell>
63+
<mxCell id="h8aSxiHESVSjdpus-O2o-177" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" value="Legend:" vertex="1">
64+
<mxGeometry height="30" width="60" x="455" y="440" as="geometry" />
65+
</mxCell>
66+
<mxCell id="h8aSxiHESVSjdpus-O2o-178" parent="1" style="rounded=0;whiteSpace=wrap;html=1;" value="Hardware" vertex="1">
67+
<mxGeometry height="28" width="90" x="465" y="464" as="geometry" />
68+
</mxCell>
69+
<mxCell id="h8aSxiHESVSjdpus-O2o-179" parent="1" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;" value="Software" vertex="1">
70+
<mxGeometry height="42.5" width="90" x="465" y="494" as="geometry" />
71+
</mxCell>
72+
<mxCell id="KFP33Eqs2nLdhzCg77SQ-2" edge="1" parent="1" style="endArrow=classic;html=1;rounded=0;" value="">
73+
<mxGeometry height="50" relative="1" width="50" as="geometry">
74+
<mxPoint x="320" y="343" as="sourcePoint" />
75+
<mxPoint x="410" y="343" as="targetPoint" />
76+
</mxGeometry>
77+
</mxCell>
78+
<mxCell id="KFP33Eqs2nLdhzCg77SQ-3" connectable="0" parent="KFP33Eqs2nLdhzCg77SQ-2" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" value="U&lt;sub&gt;PWM,J2/3&lt;/sub&gt;" vertex="1">
79+
<mxGeometry relative="1" x="-0.6222" y="-2" as="geometry">
80+
<mxPoint x="23" y="-12" as="offset" />
81+
</mxGeometry>
82+
</mxCell>
83+
<mxCell id="E7OiFfowcqix1a-FEGR8-31" parent="1" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" value="UART" vertex="1">
84+
<mxGeometry height="50" width="125" x="805" y="464" as="geometry" />
85+
</mxCell>
86+
<mxCell id="E7OiFfowcqix1a-FEGR8-32" edge="1" parent="1" source="E7OiFfowcqix1a-FEGR8-31" style="endArrow=none;dashed=1;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="E7OiFfowcqix1a-FEGR8-31" value="">
87+
<mxGeometry height="50" relative="1" width="50" as="geometry">
88+
<mxPoint x="975" y="494" as="sourcePoint" />
89+
<mxPoint x="1025" y="444" as="targetPoint" />
90+
</mxGeometry>
91+
</mxCell>
92+
<mxCell id="E7OiFfowcqix1a-FEGR8-33" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;">
93+
<mxGeometry relative="1" as="geometry">
94+
<mxPoint x="805" y="474.5" as="sourcePoint" />
95+
<mxPoint x="775" y="474" as="targetPoint" />
96+
</mxGeometry>
97+
</mxCell>
98+
<mxCell id="E7OiFfowcqix1a-FEGR8-34" parent="1" style="text;html=1;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=0;fontSize=9;horizontal=1;fontFamily=Lucida Console;" value="Databits" vertex="1">
99+
<mxGeometry height="10" width="90" x="685" y="470" as="geometry" />
100+
</mxCell>
101+
<mxCell id="E7OiFfowcqix1a-FEGR8-35" edge="1" parent="1" style="endArrow=none;html=1;strokeWidth=2;rounded=0;strokeColor=#999999;" value="">
102+
<mxGeometry height="50" relative="1" width="50" as="geometry">
103+
<mxPoint x="791" y="486" as="sourcePoint" />
104+
<mxPoint x="781" y="466" as="targetPoint" />
105+
</mxGeometry>
106+
</mxCell>
107+
<mxCell id="E7OiFfowcqix1a-FEGR8-36" connectable="0" parent="E7OiFfowcqix1a-FEGR8-35" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=middle;fontColor=#999999;" value="3" vertex="1">
108+
<mxGeometry relative="1" x="-0.44" y="1" as="geometry">
109+
<mxPoint x="-12" y="-15" as="offset" />
110+
</mxGeometry>
111+
</mxCell>
112+
<mxCell id="E7OiFfowcqix1a-FEGR8-37" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;">
113+
<mxGeometry relative="1" as="geometry">
114+
<mxPoint x="805" y="503.91999999999996" as="sourcePoint" />
115+
<mxPoint x="775" y="503.91999999999996" as="targetPoint" />
116+
</mxGeometry>
117+
</mxCell>
118+
<mxCell id="E7OiFfowcqix1a-FEGR8-38" edge="1" parent="1" style="endArrow=none;html=1;strokeWidth=2;rounded=0;strokeColor=#999999;verticalAlign=top;" value="">
119+
<mxGeometry height="50" relative="1" width="50" as="geometry">
120+
<mxPoint x="791" y="514" as="sourcePoint" />
121+
<mxPoint x="781" y="494" as="targetPoint" />
122+
</mxGeometry>
123+
</mxCell>
124+
<mxCell id="E7OiFfowcqix1a-FEGR8-39" connectable="0" parent="E7OiFfowcqix1a-FEGR8-38" style="edgeLabel;html=1;align=left;verticalAlign=top;resizable=0;points=[];labelPosition=right;verticalLabelPosition=middle;fontColor=#999999;" value="2" vertex="1">
125+
<mxGeometry relative="1" x="-0.44" y="1" as="geometry">
126+
<mxPoint x="3" y="-5" as="offset" />
127+
</mxGeometry>
128+
</mxCell>
129+
<mxCell id="E7OiFfowcqix1a-FEGR8-40" parent="1" style="text;html=1;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=0;fontSize=9;horizontal=1;fontFamily=Lucida Console;" value="Paritybit" vertex="1">
130+
<mxGeometry height="10" width="90" x="685" y="498" as="geometry" />
131+
</mxCell>
132+
<mxCell id="E7OiFfowcqix1a-FEGR8-41" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;">
133+
<mxGeometry relative="1" as="geometry">
134+
<mxPoint x="805" y="489" as="sourcePoint" />
135+
<mxPoint x="775" y="489" as="targetPoint" />
136+
</mxGeometry>
137+
</mxCell>
138+
<mxCell id="E7OiFfowcqix1a-FEGR8-42" parent="1" style="text;html=1;align=right;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=0;fontSize=9;horizontal=1;fontFamily=Lucida Console;" value="Stopbits" vertex="1">
139+
<mxGeometry height="10" width="90" x="685" y="484" as="geometry" />
140+
</mxCell>
141+
<mxCell id="E7OiFfowcqix1a-FEGR8-43" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;verticalAlign=bottom;labelPosition=center;verticalLabelPosition=top;align=center;horizontal=1;" value="" vertex="1">
142+
<mxGeometry height="10" width="10" x="1005" y="470" as="geometry" />
143+
</mxCell>
144+
<mxCell id="E7OiFfowcqix1a-FEGR8-44" edge="1" parent="1" source="E7OiFfowcqix1a-FEGR8-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;endArrow=none;endFill=0;startArrow=classic;startFill=1;">
145+
<mxGeometry relative="1" as="geometry">
146+
<mxPoint x="955" y="503" as="sourcePoint" />
147+
<mxPoint x="930" y="502.9710144927536" as="targetPoint" />
148+
</mxGeometry>
149+
</mxCell>
150+
<mxCell id="E7OiFfowcqix1a-FEGR8-45" parent="1" style="whiteSpace=wrap;html=1;aspect=fixed;verticalAlign=bottom;labelPosition=center;verticalLabelPosition=top;align=center;horizontal=1;" value="" vertex="1">
151+
<mxGeometry height="10" width="10" x="1005" y="498" as="geometry" />
152+
</mxCell>
153+
<mxCell id="E7OiFfowcqix1a-FEGR8-46" parent="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=0;fontSize=9;horizontal=1;fontFamily=Lucida Console;" value="RxD (PD0)" vertex="1">
154+
<mxGeometry height="10" width="70" x="930" y="460" as="geometry" />
155+
</mxCell>
156+
<mxCell id="E7OiFfowcqix1a-FEGR8-47" parent="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=0;fontSize=9;horizontal=1;fontFamily=Lucida Console;" value="TxD (PD1)" vertex="1">
157+
<mxGeometry height="10" width="70" x="930" y="508" as="geometry" />
158+
</mxCell>
159+
<mxCell id="E7OiFfowcqix1a-FEGR8-48" edge="1" parent="1" source="E7OiFfowcqix1a-FEGR8-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;">
160+
<mxGeometry relative="1" as="geometry">
161+
<mxPoint x="960" y="474.99" as="sourcePoint" />
162+
<mxPoint x="930" y="474.96101449275363" as="targetPoint" />
163+
</mxGeometry>
164+
</mxCell>
165+
<mxCell id="E7OiFfowcqix1a-FEGR8-49" edge="1" parent="1" style="endArrow=none;html=1;strokeWidth=2;rounded=0;strokeColor=#999999;" value="">
166+
<mxGeometry height="50" relative="1" width="50" as="geometry">
167+
<mxPoint x="877.5" y="538" as="sourcePoint" />
168+
<mxPoint x="857.5" y="528" as="targetPoint" />
169+
</mxGeometry>
170+
</mxCell>
171+
<mxCell id="E7OiFfowcqix1a-FEGR8-50" connectable="0" parent="E7OiFfowcqix1a-FEGR8-49" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=middle;fontColor=#999999;" value="12" vertex="1">
172+
<mxGeometry relative="1" x="-0.44" y="1" as="geometry">
173+
<mxPoint as="offset" />
174+
</mxGeometry>
175+
</mxCell>
176+
<mxCell id="E7OiFfowcqix1a-FEGR8-51" edge="1" parent="1" source="E7OiFfowcqix1a-FEGR8-52" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" value="">
177+
<mxGeometry relative="1" as="geometry">
178+
<mxPoint x="867.5" y="514" as="targetPoint" />
179+
</mxGeometry>
180+
</mxCell>
181+
<mxCell id="E7OiFfowcqix1a-FEGR8-52" parent="1" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;rotation=0;fontSize=9;horizontal=1;fontFamily=Lucida Console;" value="Baudrate" vertex="1">
182+
<mxGeometry height="10" width="110" x="812.5" y="544" as="geometry" />
183+
</mxCell>
184+
<mxCell id="E7OiFfowcqix1a-FEGR8-55" edge="1" parent="1" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" value="">
185+
<mxGeometry height="50" relative="1" width="50" as="geometry">
186+
<mxPoint x="867.21" y="410" as="sourcePoint" />
187+
<mxPoint x="867.21" y="460" as="targetPoint" />
188+
</mxGeometry>
189+
</mxCell>
190+
</root>
191+
</mxGraphModel>
192+
</diagram>
193+
</mxfile>

‎images/dataflow.png‎

114 KB
Loading

0 commit comments

Comments
 (0)