-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflatpanel.html
More file actions
234 lines (206 loc) · 14.3 KB
/
Copy pathflatpanel.html
File metadata and controls
234 lines (206 loc) · 14.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- theme-init -->
<script>(function(){try{if(localStorage.getItem('theme')==='light'){document.documentElement.classList.add('light-mode');}}catch(e){}})();</script>
<!-- /theme-init -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- favicons -->
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<!-- /favicons -->
<meta name="description" content="Discover Astrotaca’s motorized flat panel project for astrophotography flat-field calibration and remote imaging.">
<link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml">
<link rel="canonical" href="https://astrotaca.com/flatpanel">
<meta property="og:title" content="Motorized Flat Panel | Astrotaca Astrophotography Project">
<meta property="og:description" content="Discover Astrotaca’s motorized flat panel project for astrophotography flat-field calibration and remote imaging.">
<meta property="og:url" content="https://astrotaca.com/flatpanel">
<meta property="og:type" content="website">
<meta property="og:image" content="https://astrotaca.com/images/og-card.png">
<meta property="og:image:alt" content="Astrotaca logo">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Motorized Flat Panel | Astrotaca Astrophotography Project">
<meta name="twitter:description" content="Discover Astrotaca’s motorized flat panel project for astrophotography flat-field calibration and remote imaging.">
<meta name="twitter:image" content="https://astrotaca.com/images/og-card.png">
<title>Motorized Flat Panel | Astrotaca Astrophotography Project</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@700;900&family=Noto+Sans:wght@400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="sidebar-overlay" class="sidebar-overlay"></div>
<div id="sidebar-container"><aside id="sidebar" class="sidebar">
<div class="sidebar-resize-handle"></div>
<div class="sidebar-bg"></div>
<div class="sidebar-content">
<div class="sidebar-header">
<a href="/" class="avatar-link" aria-label="Home">
<img src="/avatar/avatar.jpg" alt="Astrotaca" class="avatar">
</a>
<p class="site-title">Astrotaca</p>
<p class="site-subtitle">20 year old Student & Astrophotographer</p>
</div>
<nav class="sidebar-nav">
<ul>
<li><a href="/" class="nav-link">Home</a></li>
<li><a href="/gallery" class="nav-link">Gallery</a></li>
<li><a href="/guides" class="nav-link">Guides</a></li>
<li><a href="/flatpanel" class="nav-link">Flat Panel</a></li>
<li><a href="/software" class="nav-link">Software</a></li>
<li><a href="/about" class="nav-link">About</a></li>
<li><a href="/contact" class="nav-link">Contact</a></li>
</ul>
</nav>
<div class="sidebar-social">
<ul>
<li>
<a href="https://github.com/astrotaca" target="_blank" rel="noopener" title="GitHub" aria-label="GitHub">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
</svg>
</a>
</li>
<li>
<a href="https://youtube.com/@astrotaca" target="_blank" rel="noopener" title="YouTube" aria-label="YouTube">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
<path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/>
</svg>
</a>
</li>
<li>
<a href="https://www.astrobin.com/users/astrotaca/" target="_blank" rel="noopener" title="AstroBin" aria-label="AstroBin">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
<path d="M12 2L13.09 8.26L20 9L13.09 9.74L12 16L10.91 9.74L4 9L10.91 8.26L12 2Z"/>
</svg>
</a>
</li>
<li>
<a href="https://www.paypal.com/paypalme/astrotaca" target="_blank" rel="noopener" title="PayPal" aria-label="PayPal">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
<path d="M9 2h5.5c2.48 0 4.5 2.02 4.5 4.5S16.98 11 14.5 11H10v9H7V2zm3 2H9v7h4.5c1.38 0 2.5-1.12 2.5-2.5S14.88 6 13.5 6H12V4z"/>
</svg>
</a>
</li>
</ul>
</div>
</div>
</aside></div>
<main class="main-content">
<nav class="top-nav">
<button id="sidebar-toggle" class="sidebar-toggle" type="button" aria-label="Open menu" aria-expanded="false">
<span></span>
<span></span>
<span></span>
</button>
<button id="theme-toggle" class="theme-toggle" type="button" aria-label="Switch to light mode" aria-pressed="false" title="Toggle light and dark mode">
<svg class="theme-icon theme-icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<circle cx="12" cy="12" r="4"></circle>
<path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41"></path>
</svg>
<svg class="theme-icon theme-icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
</button>
</nav>
<section class="content-section active flatpanel-page">
<div class="container">
<header class="section-header centered">
<h1>Motorized Flat Panel</h1>
</header>
<div class="about-content">
<div class="about-text">
<h2>Overview</h2>
<p class="box-subtitle">A fully automated flat panel that lives on your telescope.</p>
<p>Flats are the most tedious part of an imaging session, and the easiest to put off until you are half asleep. This motorized flat panel stays mounted on your scope and captures them for you from start to finish, with nothing to hold up, drape over, or remember.</p>
<p>It opens and closes on command, sets its own brightness, and is fully ASCOM-compatible, so it drops straight into your NINA sequence. A full night, flats included, can run completely unattended.</p>
<p>The unit shown in these renders is the AT-65, built to fit 65mm refractors like the ZWO FF65 APO and Askar 65PHQ.</p>
<figure>
<img src="images/flatpanel/front-view.png" loading="lazy" alt="motorized flat panel mounted on ZWO FF65 APO telescope front view" class="detail-image">
<figcaption>The flat panel mounted on a ZWO FF65 APO.</figcaption>
</figure>
<figure>
<img src="images/flatpanel/side-view.png" loading="lazy" alt="motorized flat panel mounted on telescope side view" class="detail-image">
<figcaption>Side profile of the flat panel.</figcaption>
</figure>
<h2>What it does</h2>
<ul>
<li>Opens and closes automatically from your imaging sequence</li>
<li>Self-adjusting brightness for consistent, repeatable flats</li>
<li>Fully ASCOM-compatible, no manual steps and no babysitting</li>
<li>Even, uniform illumination across the whole panel</li>
<li>Stays mounted on the scope, set it once and leave it</li>
<li>Compact, self-contained, and tidy on the rig</li>
</ul>
<h2>Why I built it</h2>
<p>Taking flats was always the improvised step in my setup, a t-shirt over the scope or a tablet showing a white screen. It works, but it means being at the telescope at the end of every session. The rest of my rig already runs on its own, so I built a panel that handles flats the same way.</p>
<h2>Status</h2>
<p>It is an active build in progress. Right now I am deep in prototyping, designing and testing the hardware to make it reliable enough to run unattended, night after night. It is not ready to ship yet, but it gets closer with every iteration, and I am sharing the milestones along the way.</p>
<h2>Want one for your scope?</h2>
<p>Right now the AT-65 fits 65mm refractors. If you image with something else, tell me what you have and I will work toward a panel that fits it. Measure the outer diameter of your dew shield in millimeters, drop it below with your email, and I will let you know when there is one for your scope.</p>
<form id="flatpanel-fit" action="https://formspree.io/f/meevojgy" method="POST" class="contact-form">
<input type="hidden" name="_subject" value="Flat panel fit request">
<input type="hidden" name="interest" value="flat-panel-fit-request">
<label>
Your email
<input type="email" name="email" required>
</label>
<label>
Your telescope
<input type="text" name="telescope" placeholder="e.g. ZWO FF65 APO" required>
</label>
<label>
Dew shield outer diameter (mm)
<input type="number" name="dew_shield_mm" min="0" step="1" placeholder="e.g. 95">
<span class="contact-note">Measure across the front opening of your scope or dew shield. I recommend a digital vernier caliper for the most accurate reading.</span>
</label>
<button type="submit" class="btn-link">Send it over</button>
<p id="flatpanel-feedback" class="contact-feedback" aria-live="polite"></p>
</form>
<p class="cta-or">Or join the Discord for progress and first looks.</p>
<a href="https://discord.gg/Xcgum8ekWb" target="_blank" rel="noopener" class="btn-link">Join the Discord</a>
</div>
</div>
</div>
</section>
</main>
<script>
document.addEventListener('DOMContentLoaded', function () {
var form = document.getElementById('flatpanel-fit');
var feedback = document.getElementById('flatpanel-feedback');
if (!form || !feedback) return;
var button = form.querySelector('button[type="submit"]');
if (!button) return;
form.addEventListener('submit', function (event) {
if (!window.fetch) return;
event.preventDefault();
var formData = new FormData(form);
feedback.textContent = 'Sending...';
button.disabled = true;
fetch(form.action, {
method: 'POST',
body: formData,
headers: { 'Accept': 'application/json' }
}).then(function (response) {
if (response.ok) {
feedback.textContent = 'Thanks! I will reach out when there is an AT for your scope.';
form.reset();
} else {
return response.json().then(function (data) {
feedback.textContent = (data && data.error) || 'Something went wrong. Please try again.';
});
}
}).catch(function () {
feedback.textContent = 'Something went wrong. Please try again.';
}).finally(function () {
button.disabled = false;
});
});
});
</script>
<script src="sidebar.js"></script>
</body>
</html>